我们如何在定义函数时传递两个列表作为参数?我的意思是两个列表是仲裁的,并且“真实列表”将在函数执行期间作为参数传递。
是否像
(define checklist
(lambda (list1 list2)
(or (null? list1) (null? list2))
#and my other work here))
或
(define (checklist list1 list2)
(or (null? list1) (null? list2))
#and my other work here)
或
(define checklist
(lambda list1 list2)
(or (null? list1) (null? list2))
#and my other work here)
?我很抱歉,如果它太基本了。我已经尝试了这些但是当我通过2个列表来运行该函数时,我得到了“错误的参数数量”错误。感谢你!
答案 0 :(得分:0)
第三个产生一个rest参数list1
并返回全局变量list2
的值,如果它不存在则返回错误。但是给define
3个以上的表达式是不合法的,所以第三个不会被接受。
由于(define (checklist l1 l2) ...)
只是写(define checklist (lambda (1 2) ...))
的奇特方式,因此前两个例子完全相同。
请注意(or x y z)
将评估为第一个真值,如果在变为死代码后有表达式。如果您希望在(or x y z)
成真或不成真的情况下做某事,则需要使用像(if (or x y z) something-expression something-else-expression)
这样的条件