何时在Clojure中使用let和if-let

什么时候使用if-let而不是让代码看起来更好,它是否有任何性能影响?
我想if-let应该使用,当你想引用一个if条件的值在代码的“然后”部分:

即代替

(let [result :foo]
  (if result
    (do-something-with result)
    (do-something-else)))

你写:

(if-let [result :foo]
  (do-something-with result)
  (do-something-else))

这是一个有点整洁,并保存你进一步水平。就效率而言,您可以看到宏扩展不会增加很多开销:

(clojure.core/let [temp__4804__auto__ :foo]
  (if temp__4804__auto__
    (clojure.core/let [result temp__4804__auto__]
      (do-something-with result))
    (do-something-else)))

这也说明绑定不能在代码的“else”部分引用。

翻译自:https://stackoverflow.com/questions/2010287/when-to-use-let-vs-if-let-in-clojure

转载注明原文:何时在Clojure中使用let和if-let