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

Nat*_*han 2 clojure

我正在学习Clojure,并试图找出简洁明了的语言.我试图从一个返回值或nil的函数获取一个值(比如从数据库中)后,有条件地对某个值执行某些操作.我目前正在使用let绑定,然后使用if语句.这与我目前的情况类似:

(defn foo [key]
  (let [result (try-getting! key)]
    (if result
      (+ result 50)
      50)))
Run Code Online (Sandbox Code Playgroud)

我试图弄清楚是否有更简洁的方法来做到这一点,也许是某种组合的if-let绑定?有没有办法更好地写这个?

谢谢!

Jar*_*lax 8

有形式if-let为此:

(defn foo [key]
  (if-let [result (try-getting! key)]
    (+ result 50)
    50))
Run Code Online (Sandbox Code Playgroud)


noi*_*ith 5

是的,实际上if-let就是你想要的.

 (if-let [result (try-getting! key)]
   (+ result 50)
   50)
Run Code Online (Sandbox Code Playgroud)