我知道嵌套#,%是坏的 - 然而,我经常发现自己编写简短的在线匿名函数,最终只有2个级别的#/%.
因此,我很好奇,有没有办法告诉clojure每个%绑定到最近(最小的封闭)#?
谢谢!
嵌套匿名函数完全没问题.您只需使用非简写语法.
#(foo (bar %1)
(baz %2))
Run Code Online (Sandbox Code Playgroud)
相当于
(fn [x y]
(foo (bar x)
(bax y)))
Run Code Online (Sandbox Code Playgroud)
完整变体可以任意嵌套.另外,如果你倾向于使用map有fn很多,可以考虑使用for,而不是(这往往看起来更清晰,在我看来):
(map (fn [row]
(map (fn [col]
(+ (* 10 row) col))
(range 3)))
(range 3))
Run Code Online (Sandbox Code Playgroud)
做同样的事情
(for [row (range 3)]
(for [col (range 3)]
(+ (* 10 row) col)))
Run Code Online (Sandbox Code Playgroud)
clojure不支持嵌套匿名函数.
编辑:我的意思是"匿名函数" #(...),而不是(fn ...).为混乱道歉.