我知道嵌套#,% 是不好的——但是,我经常发现自己编写简短的在线匿名函数,这些函数最终正好有2 层#/%。
因此,我很好奇,有没有办法告诉 clojure 每个 % 绑定到最近的(最小的封闭)#?
谢谢!
嵌套匿名函数非常好。您只需要使用非速记语法。
#(foo (bar %1)
(baz %2))
相当于
(fn [x y]
(foo (bar x)
(bax y)))
完整的变体可以任意嵌套。此外,如果您倾向于大量使用map
,请fn
考虑使用for
代替(在我看来,这往往看起来更清晰):
(map (fn [row]
(map (fn [col]
(+ (* 10 row) col))
(range 3)))
(range 3))
做同样的事情
(for [row (range 3)]
(for [col (range 3)]
(+ (* 10 row) col)))
clojure 不支持匿名函数的嵌套。
编辑:我的意思是“匿名函数” #(...)
,不是(fn ...)
。为混乱道歉。