應用功能
如果你有一個列表,並且你想使用該列表的元素作為函式的引數,你想要的是 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
功能 。