Clojure:让范围和函数返回值

kfk*_*kfk 14 scope return clojure let

我有一些麻烦,想知道如何使用"让"形式.在下面的示例中,我想在本地绑定值"cols",以便稍后在函数中处理它.然而,我注意到的是,如果我使用"let"函数,则sel-opt-tmp函数将返回nil值而不是列表.

(defn sel-opt-tmp []
  (let [cols "test"]))

(prn (sel-opt-tmp))
Run Code Online (Sandbox Code Playgroud)

*上面的代码返回一个nil值.

我理解"let"只绑定函数范围内的值,我不知道是否有办法将值传递给let范围.也许有一些我不知道的"回归"?或者这只是糟糕的设计,在这种情况下我根本不应该使用绑定(这往往会创建很长的函数链,尽管很难读)?

Adr*_*uat 21

它返回nil,因为let语句的内容为空(或nil).尝试:

(let [cols "test"] cols)

哪个会返回值cols.正如seh所说,let语句计算其最后一个子表达式的值.