racket “应用”函数

例子

如果你有一个列表,并且你想使用该列表的元素作为函数的参数,你想要的是apply:

> (apply string-append (list "hello" " " "and hi" " " "are both words"))
"hello and hi are both words"
> (apply + (list 1 2 3 4))
10
> (apply append (list (list "a" "b" "c") (list 1 2 3) (list "do" "re" "mi")))
(list "a" "b" "c" 1 2 3 "do" "re" "me")

apply需要两个参数。第一个参数是要应用的函数,第二个参数是包含参数的列表。

apply像这样的电话

(apply + (list 1 2 3 4))

相当于

(+ 1 2 3 4)

的主要优点apply是它适用于任意计算列表,包括附加列表和来自函数参数的列表。

> (apply + (append (list 1 2 3 4) (list 2 3 4)))
19
> (define (sum lst)
    (apply + lst))
> (sum (list 1 2 3 4))
10
> (sum (append (list 1 2 3 4) (list 2 3 4)))
19

有关更多信息和示例,请参阅球拍指南中的apply功能