If statement clojure如果还有别的吗?
这应该是一个非常琐碎的问题。 我是Clojure的新手,写这篇文章的依据是: 然而,我不断地发现这个错误: java.lang.Exception:if的参数太多(无源文件:424) 在模板中:If statement clojure如果还有别的吗?,if-statement,clojure,If Statement,Clojure,这应该是一个非常琐碎的问题。 我是Clojure的新手,写这篇文章的依据是: 然而,我不断地发现这个错误: java.lang.Exception:if的参数太多(无源文件:424) 在模板中: (if test then else?) then和else都不表示关键字,而是实际表达式。?表示else表达式是可选的 对测试条件进行求值,并根据其值对相应的分支表达式进行求值,并将其作为整个if表达式的值“返回” 例如,这将定义一个绝对值函数: (defn abs [x] (if (<
(if test then else?)
then
和else
都不表示关键字,而是实际表达式。?
表示else
表达式是可选的
对测试条件进行求值,并根据其值对相应的分支表达式进行求值,并将其作为整个if表达式的值“返回”
例如,这将定义一个绝对值函数:
(defn abs [x]
(if (< x 0)
(- x)
x))
(定义abs[x]
(如果(
这是编写此代码的惯用方法。我建议使用一个文本编辑器/IDE,它具有编辑Lisp源代码(括号/括号/大括号匹配)的基本支持。删除所有冗余代码的示例的正确实现是:
(defn sumdown
[sum x]
(recur (+ sum x) (dec x)))
因为你的“then”和“else”子句都是相同的,而“do”是多余的(在任何情况下,各种“do”形式都有副作用)
其他条件要考虑的是:当,康德,康德和案例。为什么你把“Do”放在里面?“尼克尼克谢谢你修理,我不知道他是不是有这个原因。1。请以正确的方式格式化您的参数。2.你的代码不起作用!你不可能是对的x@nickik:对不起,我有一段时间没写lisp了。谢谢:)@nickik
如果
并不总是需要否则
,@QuicksilverJohny这样说是对的?表示可选参数when
是一个方便的函数,它允许计算多个表达式,因为它被包装在显式的do
@too中。我说你“应该”有一个else部分。如果我在Clojure中读到“如果”,我期待一个其他的。它使代码更具可读性,以便在需要时始终使用。@nickik所以它是一种风格选择?这难道不限制那些与你想法不同的人吗?就我个人而言,我喜欢这样一个事实,即语言提供了一些灵活性,而没有强加“一种真正的方式”。我在编写公开使用的库时可以理解这种方法。这就是说,我以后肯定会看看,因为我也很难处理clojure括号中的意大利面。
(defn sumdown [sum x]
(if (foo x)
(recur (+ sum x) (dec x))
(recur (+ sum x) (dec x))))
(defn sumdown
[sum x]
(recur (+ sum x) (dec x)))