我在另一个函数中定义一个函数.以下方法之一是否比其他方法更好或更优选?
(let [hey (println "hey there")] hey)
Run Code Online (Sandbox Code Playgroud)
要么
(let [hey (fn [] (println "hey here"))] (hey))
Run Code Online (Sandbox Code Playgroud)
第一个版本不会像你想要的那样工作.它在let期间被评估一次,并且hey将被绑定到该值nil.即hey,价值不是一个功能.
第二个很好,很容易阅读.其他方法:
(let [hey0 #(println "hey0")] (hey0))
(letfn [(hey1 [] (println "hey1"))] (hey1))
Run Code Online (Sandbox Code Playgroud)
我没有真正的使用规则.我只使用#()读取器宏形式用于非常短的函数,letfn如果我一起定义了一堆内部函数.
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |