【发布时间】:2011-08-19 15:48:48
【问题描述】:
在 elisp 中,我可以像 + 一样评估或作为函数。
(or nil 0 nil) ==> 0
(+ 1 0 1) ==> 2
我可以使用 apply 将 + 应用于列表
(apply '+ '(1 0 1)) ==> 2
所以,我会认为或会以同样的方式工作,但事实并非如此。
(apply 'or '(nil 0 nil)) ==> error: (invalid-function or)
我想这来自一些用于实现短路评估的内部魔法。如何使用 apply 对列表执行 or 操作?
附:我想要的应用程序是找出命令行上的任何元素是否与特定模式匹配,所以我正在写的重要部分是:
(apply 'or (mapcar (lambda (x) (string-match-p "pattern" x)) command-line-args))
但它不起作用
【问题讨论】: