如何在Clojure中组合let绑定和if语句

如何在Clojure中组合let绑定和if语句,clojure,Clojure,我正在学习Clojure,并试图找出简洁清晰地写东西的语言。我试图在从一个返回值或nil的函数中获取一个值(比如从数据库中)之后,有条件地使用一个值做一些事情。我目前使用的是let绑定,然后是if语句。这里有一些类似于我目前拥有的东西: (defn foo [key] (let [result (try-getting! key)] (if result (+ result 50) 50))) 我想知道是否有一种更为周全的方法来实现这一点,也许是某种组合的i

我正在学习Clojure,并试图找出简洁清晰地写东西的语言。我试图在从一个返回值或nil的函数中获取一个值(比如从数据库中)之后,有条件地使用一个值做一些事情。我目前使用的是let绑定,然后是if语句。这里有一些类似于我目前拥有的东西:

(defn foo [key]
  (let [result (try-getting! key)]
    (if result
      (+ result 50)
      50)))
我想知道是否有一种更为周全的方法来实现这一点,也许是某种组合的if-let绑定?有没有办法写得更好


谢谢

是的,事实上,
如果让
就是你想要的

 (if-let [result (try-getting! key)]
   (+ result 50)
   50)
这有一种形式:

(defn foo [key]
  (if-let [result (try-getting! key)]
    (+ result 50)
    50))

这正是我要找的!谢谢