- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试保存 (ql:system-apropos "regex")
的输出通过使用 multiple-value-bind
到一个变量, 但我只有 nil
.但是,似乎此命令仅将文本打印到 REPL 并且不返回任何变量,因此似乎不起作用。在那种情况下,有没有办法获得 ql:system-apropos
的输出?作为列表或数组,尤其是它返回的包名称。
这个基本multiple-value-bind
代码工作:
* (multiple-value-bind (first-var second-var) (floor 5 3) (defparameter *first-var* first-var) (defparameter *second-var* second-var))
*SECOND-VAR*
* *first-var*
1
* *second-var*
2
*
但这不是(如果没有什么可以绑定(bind) multiple-value-bind
的?):
* (multiple-value-bind (first-var second-var) (ql:system-apropos "regex") (defparameter *first-var* first-var) (defparameter *second-var* second-var))
#<SYSTEM com.informatimago.common-lisp.regexp / com.informatimago-20120407-git / quicklisp 2012-04-07>
#<SYSTEM lispbuilder-regex / lispbuilder-20110619-svn / quicklisp 2012-04-07>
#<SYSTEM recursive-regex / recursive-regex-20120407-git / quicklisp 2012-04-07>
#<SYSTEM recursive-regex-test / recursive-regex-20120407-git / quicklisp 2012-04-07>
#<SYSTEM regex / regex-1 / quicklisp 2012-04-07>
*SECOND-VAR*
* *first-var*
NIL
* *second-var*
NIL
*
看来 ql:system-apropos
使用 format
仅在屏幕上打印文本或者其他一些打印命令?
这样做的目的是通过使用一些字符串处理命令(可能是一些正则表达式)来提取输出的包名称,并自动安装或重新安装 ql:system-apropos
返回的所有包。 ,例如:
(defparameter *package-name-string* "lispbuilder")
(multiple-value-bind (lispbuilder-packages-list) (ql:system-apropos *package-name-string*) (defparameter *lispbuilder-packages-list* lispbuilder-packages-list))
任何其他方式获得 quicklisp
使用部分名称或某些正则表达式作为输入的包名称也是一个可行的解决方案(即使获取当前完整的包列表也会很有用)。有什么可行的解决方案吗?
最佳答案
您与 Common Lisp 的交互看起来太复杂了。
您问:将 ql:system-apropos 返回的包名称存储到一个变量中。
它真的返回任何东西吗?还是只打印一些东西?
你可以很容易地找到。我在示例中使用 CL:APROPOS
:
CL-USER 141 > (apropos "plist" "CL")
SYMBOL-PLIST (defined)
MAPLIST (defined)
只描述返回值:
CL-USER 142 > (describe (apropos "plist" "CL"))
SYMBOL-PLIST (defined)
MAPLIST (defined)
NIL is a NULL
NAME "NIL"
VALUE NIL
FUNCTION #<unbound function>
PLIST (TYPE::DIRECT-TYPE-PREDICATE TYPE::RETURN-FALSE)
PACKAGE #<The COMMON-LISP package, 2/4 internal, 978/1024 external>
什么都没有。 APROPOS
只是打印一些东西。
Common Lisp 使用输出流。只需重新绑定(bind)保存输出流的变量:
CL-USER 143 > (with-output-to-string (*standard-output*)
(apropos "plist" "CL"))
"SYMBOL-PLIST (defined)
MAPLIST (defined)"
现在你得到了一个字符串,你可以解析它。
关于lisp - 存储 ql :system-apropos into a variable 返回的包名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10474824/
我是一名优秀的程序员,十分优秀!