Clojure:让作用域和函数返回值

标签 clojure scope return let

我在弄清楚如何使用“让”表单时遇到了一些麻烦。在下面的示例中,我想在本地绑定(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/

相关文章:

variables - 如何在 Clojure 宏中绑定(bind)变量?

clojure - 这个 map 解构并不像我期望的那样工作。我究竟做错了什么?

kotlin - Kotlin:为什么“未解析的引用”是密封类的子类的构造函数参数

c - 在 else 语句中返回有好处/坏处吗?

clojure - 使用 Clojure 编写脚本

clojure - Clojure中的惯用语: (drop 1 str) or (rest str)?

javascript - 在函数内复制数组

javascript - 编程语言中变量提升的优点和缺点是什么?

c - 函数什么时候应该返回什么?

c - 我应该返回什么以避免错误 : expected identifier or ‘(’ before ‘seg’ ?