我正在学习 Racket,我不知道如何在 andmap
函数中返回一个值:
(define iguales 0)
(andmap
(lambda (x y)
(cond
((eq? (last x) (last y))
(set! iguales (add1 iguales)))))
casos extension)
如果我在 lambda (x y)
函数的末尾添加 iguales
我认为它会为每个 x
和 y
值。
在该 lambda 函数中放置返回值的正确位置在哪里?
最佳答案
主体返回最后一个形式的值。
这个:
(cond ((eq? (last x) (last y))
(set! iguales (add1 iguales)))
返回 #f
或 set!
形式的结果。
为了在任何情况下从 lambda 返回 iguales
:
(lambda (x y)
(cond ((eq? (last x) (last y))
(set! iguales (add1 iguales))))
iguales)
然后 andmap
表单将返回 #f
或 casos
和 extension
中较短者的长度(明白为什么了吗?)。
关于scheme - 如何在 andmap 中的 lambda 函数中返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53495869/