clojureで無名関数に複数の引数を渡してみる
無名関数って、複数の引数渡せないかと思ったらそんな事無かった。
途中に引数が多かったり少ない場合なども試してみた。
%1とか%2が第1引数、第2引数に相当する。%&を使うと残りの引数をまとめてリストで受け取れる。
user=> (#(str %) 1) "1" user=> (#(str %1) 1) "1" user=> (#(str %1 %2) 1 2) "12" user=> (#(str %1 %2) 1 2 3) java.lang.IllegalArgumentException: Wrong number of args passed to: user$eval--613$fn (NO_SOURCE_FILE:0) user=> (#(str %1 %2) 1) java.lang.IllegalArgumentException: Wrong number of args passed to: user$eval--621$fn (NO_SOURCE_FILE:0) user=> (#(str %1 %2 %&) 1 2 3) "12(3)" user=> (#(str %1 %2 %&) 1 2) "12" user=> (#(str %1 %2 %&) 1 2 3 4) "12(3 4)" user=> (#(str %1 %2 %&) 1) java.lang.IllegalArgumentException: Wrong number of args passed to: user$eval--657$fn (NO_SOURCE_FILE:0)
参考:http://clojure.org/reader#The%20Reader--Macro%20characters