我在弄清楚如何使用“让”表单时遇到了一些麻烦。在下面的示例中,我想在本地绑定(bind)值“cols”,以便稍后在函数中对其进行处理。然而,我注意到的是,如果我使用“let”,函数 sel-opt-tmp 将返回一个 nil 值而不是一个列表。
(defn sel-opt-tmp []
(let [cols "test"]))
(prn (sel-opt-tmp))
*以上代码返回一个 nil 值。
我知道“let”只绑定(bind)函数范围内的值,我不知道是否有办法将值传递到 let 范围之外。也许有我不知道的“返回”之类的东西?或者这只是糟糕的设计,在这种情况下我根本不应该使用绑定(bind)(这往往会创建难以阅读的长链函数)?
最佳答案
它返回 nil 因为 let 语句的内容为空(或 nil)。尝试:(let [cols "test"] cols)
这将返回 cols
的值.正如 seh 所说,一个 let 语句的计算结果是其最后一个子表达式的值。
关于Clojure:让作用域和函数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8185522/