:let 让你定义命名值,就像let特殊形式允许你这样做:
(for [i (range 10)
:let [x (* i 2)]]
x) ;;=> (0 2 4 6 8 10 12 14 16 18)
Run Code Online (Sandbox Code Playgroud)
相当于:
(for [i (range 10)]
(let [x (* i 2)]
x)) ;;=> (0 2 4 6 8 10 12 14 16 18)
Run Code Online (Sandbox Code Playgroud)
除非与:when(或:while)结合使用时:
(for [i (range 10)
:let [x (* i 2)]
:when (> i 5)]
x) ;;=> (12 14 16 18)
(for [i (range 10)]
(let [x (* i 2)]
(when (> i 5) x))) ;;=> (nil nil nil nil nil nil 12 14 16 18)
Run Code Online (Sandbox Code Playgroud)