检查论断结合每个元素后是否均为真
(vl-every predicate-function list [list]...)
vl-every 函数将每个表的第一个元素作为参数(如果有多个表则形成参数表)传递给测试函数,然后传递每个表中的下一个元素,以此类推,直至其中一个表到达结束处为止。
参数
predicate-function
测试函数。它可以是任何一个函数:参数个数和 vl-every 提供的表的个数一致,且对任何用户指定条件返回 T。predicate-function 的值可以采用下列格式之一:
list
要测试的表。
返回值
如果 predicate-function 结合每个元素后均返回非 nil 值,函数返回 T,否则返回 nil。
示例
检查当前目录下是否有空文件:
_$ (vl-every
'(lambda (fnm) (> (vl-file-size fnm) 0))
(vl-directory-files nil nil 1) )
T
检查 NLST 中的数值列表是否按 '<= 排序:
_$ (setq nlst (list 0 2 pi pi 4))
(0 2 3.14159 3.14159 4)
_$ (vl-every '<= nlst (cdr nlst))
T
比较下列表达式的结果:
_$ (vl-every '= '(1 2) '(1 3))
nil
_$ (vl-every '= '(1 2) '(1 2 3))
T
第一个表达式返回 nil,因为 vl-every 比较两个表中的第二个元素,而它们在数值上并不相等。第二个表达式返回 T,因为 vl-every 在处理完较短的表 (1,2) 中所有元素后即停止比较,而直到这时为止,两个表是相等的。如果到达了表的结束处,则 vl-every 返回非 nil 值。
下面的样例演示 vl-every 计算两个表的结果。这两个表中的一个包含整数,另一个为 nil:
_$ (setq alist (list 1 2 3 4))
(1 2 3 4)
_$ (setq junk nil)
nil
_$ (vl-every '= junk alist)
T
返回值为 T,因为 vl-every 处理 nil 表时,假定已经到达了表的结束处(尽管没有对其中任何元素应用论断)。既然如此,vl-every 将返回非 nil 值。
明经通道 版权所有 未经许可 不得传播 | 评论 |