Clojure:功能不会正确返回

时间:2017-10-03 13:50:47

标签: clojure

    (defn foo [n]
      (if (== 1 n)
        true
        )
      false
      )

    (if (true? (foo 1))
         (println "true")
         )
    (if (false? (foo 1))
      (println "false")
      )

这总是返回false,我假设在clojure中它只返回我在函数中写的最后一件事。当if条件满足时,如何打破循环并返回一些东西?

1 个答案:

答案 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:添加表达式要么被评估,要么不被编译器使用或优化。