如果 - 然后呢?

Asa*_*bal 10 if-statement clojure

这应该是一个非常微不足道的问题.我是Clojure的新手,并且根据以下内容编写了这个if-then-else:http://clojure.org/special_forms#Special%20Forms--%28if%20test%20then%20else?%29

但是,我不断收到此错误:

java.lang.Exception:if的参数太多(NO_SOURCE_FILE:424)

// This code has infinite recursion bugs; but it should compile!
(defn sumdown [sum x]
    (
    if (foo x) 
     (do
     (recur (+ sum x) (dec x))
     )
     else do(
        (recur (+ sum x) (dec x))
     )

     )
) 
Run Code Online (Sandbox Code Playgroud)

jac*_*ven 15

在模板中:

(if test then else?)
Run Code Online (Sandbox Code Playgroud)

两者thenelse不能代表关键字,但实际表现.的?指示else表达是可选的.

评估测试条件,并根据其值,评估适当的分支表达式并"返回"整个if表达式的值.

例如,这将定义绝对值函数:

(defn abs [x]
  (if (< x 0)
    (- x)
    x))
Run Code Online (Sandbox Code Playgroud)

  • 请以正确的方式格式化你的parens.你的代码不行!你不能正确'x <0'并且你也不能写'-x',代码看起来像这样:( defn abs [x](if(<x 0)( - x)x)).3.如果你写'if',你应该总是有一个else部分,如果你没有spezall'when'功能. (3认同)

dno*_*len 7

(defn sumdown [sum x]
  (if (foo x)
    (recur (+ sum x) (dec x))
    (recur (+ sum x) (dec x))))
Run Code Online (Sandbox Code Playgroud)

这是编写此代码的惯用方法.我推荐一个文本编辑器/ IDE,它基本支持编辑Lisp源代码(paren/bracket/brace匹配).

  • 你为什么离开'做'? (2认同)