在clojure中编写条件代码的正确方法

时间:2013-12-12 19:16:53

标签: clojure

所以我试着在clojure中编写下面的内容(假设下面的所有方法都返回boolean)

def some_method(a, b)
  if (call_this_method() )
    then_call_this_method()
  else
    new_method()
end

我得到的是:

(defn some-method [a b]
  (if (call_this_method) 
   :then (then-call-this-method) 
   :else (new-method)))

我对clojure很新,所以我不确定这是否是解决这个问题的正确方法。有不同的方法吗?

2 个答案:

答案 0 :(得分:5)

if基本上需要3个参数,[条件是什么 - 运行 - 如果是真的可选 - 运行 - 如果 - 假]

(defn some-method
    "My function does ..."
    [ a b ] 
    (if (call-this-method)
        (then-call-this-method)
        (new-method)))

答案 1 :(得分:5)

你也可以在clojure中使用if

(if test then-code else-code)

cond更像是开关

(cond
    test-A run-if-A
    test-B run-if-B
    ...
    :else else-code)

如果你想做类似

的事情
 if(foo) bar;

然后你会写

 (when foo bar)