(define result (assoc n cache))
(cond
[result => second]
[else ...])
=>
是什么意思?我猜它在second
上运行result
并返回值?这叫什么,我在哪里可以找到更多相关信息?
答案 0 :(得分:2)
在这种情况下,它与
相同(cond (result (second result))
(else ...))
一般来说,
的cond条款(foo => bar)
表示如果foo
求值为truthy值,则保存其值,并作为参数传递给bar
(它应该计算为带有一个参数的过程)。
答案 1 :(得分:2)
这意味着:如果条件评估为真值,则将该值发送到右侧的函数。它在documentation中。例如:
(define alst '((x 1) (y 2) (z 3)))
; if the list contains an association with the `y` key, return the second element
; of that association, which happens to be the value `2`
(cond ((assoc 'y alst) => second)
(else #f))
=> 2
答案 2 :(得分:2)
条款[result => second]
由cond
:
t
。second
,并将结果存储在f
中。f
是函数,则会计算(f t)
,其结果将成为cond
表达式的结果。f
不是函数,则会发出错误信号。的扩展
(cond
[result => second]
[else something])
就像是
(let ()
(define t result)
(if t (second t)
something))))