在clojure中,如何将列表传递给参数化函数(及更多)

Jim*_*Jim 3 rest clojure parameterized

说我有功能:

(defn foo [something & otherthings]
  (println something)
  (println otherthings))
Run Code Online (Sandbox Code Playgroud)

评估

(foo "ack" "moo" "boo")
Run Code Online (Sandbox Code Playgroud)

给我 :

ack                                                               
(moo boo) 
Run Code Online (Sandbox Code Playgroud)

如果我想用列表调用foo怎么办?

(foo "ack" (list "moo" "boo"))
Run Code Online (Sandbox Code Playgroud)

得到

ack                                                            
(moo boo) 
Run Code Online (Sandbox Code Playgroud)

代替

ack                                            
((moo boo)) 
Run Code Online (Sandbox Code Playgroud)

有没有办法在不改变foo的情况下做到这一点?

Jus*_*mer 8

你想要apply:

(apply foo "ack" (list "moo" "boo"))
Run Code Online (Sandbox Code Playgroud)