2013-12-12 2 views
2

Так что я пытаюсь написать ниже в Clojure (Предположим, что все методы ниже возвратного булево)Правильный способ писать условный код в Clojure

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))) 

I Я довольно новичок в clojure, поэтому не уверен, что это похоже на правильный способ решить эту проблему. Есть ли другой подход?

+0

Есть примеры в clojuredocs.org, начните с http://clojuredocs.org/clojure_core/clojure.core/if – edbond

ответ

5

if в основном занимает 3 Params, [условие, что к запуску, если-верно необязательным вводного-невыполненного]

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

Если вам нужно несколько предложений в 'then' или' else' использовании ветви '(do (function1) (function2))' – edbond

5

Вы можете использовать if в Clojure, а

(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) 
Смежные вопросы