【发布时间】:2017-10-03 13:50:46
【问题描述】:
(defn foo [n]
(if (== 1 n)
true
)
false
)
(if (true? (foo 1))
(println "true")
)
(if (false? (foo 1))
(println "false")
)
这总是返回 false,我假设在 clojure 中它只返回我在函数中写的最后一件事。当 if 条件满足时,如何打破循环并返回一些东西?
【问题讨论】:
-
将 true 后的括号移动到 false 后:
(if (== 1 n) true false)。还建议使用支持格式的编辑器,这真的很难阅读(这可能是您自己没有注意到问题的原因)。 -
查看 IntelliJ+Cursive。如上所述,这是一个支撑问题,任何代码格式都会使这一点变得明显。此外,这里没有循环。
-
还要注意 foo 等价于
(partial = 1)。 -
在 Clojure 中,您不会跳出循环;你用
recur再次闯入它。
标签: clojure