Common lisp 获取ASDF系统的版本
在ASDF系统中可以设置的其他内容包括Common lisp 获取ASDF系统的版本,common-lisp,asdf,Common Lisp,Asdf,在ASDF系统中可以设置的其他内容包括:version属性。有没有办法在运行时读取它?类似于(系统版本:我的系统名称) 我知道有asdf:version满足,也有asdf:asdf version,但在这种情况下,两者都不是我想要的。以下是代码: (defun system-version (system-designator) (let ((system (asdf:find-system system-designator nil))) (when (and system (sl
:version
属性。有没有办法在运行时读取它?类似于(系统版本:我的系统名称)
我知道有asdf:version满足
,也有asdf:asdf version
,但在这种情况下,两者都不是我想要的。以下是代码:
(defun system-version (system-designator)
(let ((system (asdf:find-system system-designator nil)))
(when (and system (slot-boundp system 'asdf:version))
(asdf:component-version system))))
它的工作原理如下:
CL-USER> (system-version :cffi)
"0.10.7.1"
CL-USER> (system-version :foo)
NIL
代码如下:
(defun system-version (system-designator)
(let ((system (asdf:find-system system-designator nil)))
(when (and system (slot-boundp system 'asdf:version))
(asdf:component-version system))))
它的工作原理如下:
CL-USER> (system-version :cffi)
"0.10.7.1"
CL-USER> (system-version :foo)
NIL
(slot value(asdf:find system)'asdf:version)
使用slot value
会破坏抽象,与基于组件版本的方法不同,后者更好。至少在理论上,有人可以为不访问插槽的asdf:component version
编写一个方法,在这种情况下,直接检查插槽的代码将丢失。(插槽值(asdf:find system)'asdf:version)
使用插槽值
会破坏抽象,与基于组件版本的方法不同,后者更好。至少在理论上,有人可以为不访问插槽的asdf:component version
编写一个方法,在这种情况下,直接检查插槽的代码将丢失。