(defn foo [n]
(if (== 1 n)
true
)
false
)
(if (true? (foo 1))
(println "true")
)
(if (false? (foo 1))
(println "false")
)
这总是返回false,我假设在clojure中它只返回我在函数中写的最后一件事。当if条件满足时,如何打破循环并返回一些东西?
答案 0 :(得分:2)
if
运算符具有以下格式:
(if conditional-expression return-for-true return-for-false)
您的代码编写如下:
(if conditional-expression return-for-true) return-for-false
请注意错位的人。另请注意,除非条件表达式是函数调用,否则不需要填充。
你写的foo函数会计算两个表达式(if ...)
和false
,并可预测地返回最后一个计算表达式,它只是文字false
。有关正在发生的事情的简短示例,请考虑以下事项:
(defn foo [n] (+ 3 n) 4)
调用此函数将始终返回4:添加表达式要么被评估,要么不被编译器使用或优化。