Java在Clojure中的开关等效物?
2022-09-01 04:54:50
在Clojure中,Java的构造有等价物吗?如果是,那是什么?如果不是,我们是否必须使用梯子来实现它?switch
if
else
在Clojure中,Java的构造有等价物吗?如果是,那是什么?如果不是,我们是否必须使用梯子来实现它?switch
if
else
案例是一个不错的选择,正如Jan所指出的那样
cond在许多相关情况下也非常有用,特别是如果您想在计算一系列不同条件表达式的基础上进行切换,例如
(defn account-message [balance]
(cond
(< balance 0) "Overdrawn!"
(< balance 100) "Low balance"
(> balance 1000000) "Rich as creosote"
:else "Good balance"))
请注意,cond 的结果由第一个匹配表达式确定,因此负余额将显示“透支!” 即使它也与低余额情况匹配。
[我已经编辑了代码 - 删除了末尾的额外括号以使其正常工作]
试试宏:case
(case (+ 2 3)
6 "error"
5 "ok")
或默认值
(case (+ 2 3)
5 "ok"
"error")
请记住,根据文档
不计算测试常量。它们必须是编译时文本,并且不需要引用。(...)
在ClojureDocs上查看更多例子。