【发布时间】:2019-10-15 08:05:19
【问题描述】:
我是 Clojure 的新手,我在使用它的基础知识方面遇到了麻烦。我正在尝试编写一个简单的 if else 程序并在递归中使用它,但我遇到了语法问题。 Java中的代码是:
if(a > 0 && b >0){
return true;
}else{
return false;
}
clojure 中的代码应该是:
(defn checkPositiveNumber
[x y]
(if (and (> x 0) (> y 0))
(do
(def val true)
)
(do
(def val false)
)
)
(println (checkPositiveNumber 2 3))
返回 #'user/val 而不是 false。
我究竟做错了什么 ?这个函数应该返回真或假,因为我将使用它来终止我的递归或进一步检查。
编辑: 多亏了李,我才得以实现我所要求的……但我的真正目的是:
if(a > 0 && b >0){
System.out.println("Values are Positive");
return true;
}else{
System.out.println("Some Values are Negative");
return false;
}
【问题讨论】:
-
您的 Java 未编译:
and不是运算符。我认为您打算使用&&运算符,并相应地编辑了您的问题。 -
那更多的是伪代码,用于参考我想在 Java 中实现的目标。写了很多 clojure 代码,混合了 Java 的语法。无论如何,谢谢..
-
... 和 Clojure 一样,您的原始 Java 可以缩短为
return a > 0 && b > 0。
标签: clojure