我在另一个函数中定义一个函数.以下方法之一是否比其他方法更好或更优选?
(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 次 |
最近记录: |