कार्यान्वित कैसे करें यदि मैं erlang में अन्य अभिव्यक्ति को कार्यान्वित कैसे करूं?अगर अन्यथा
if(a == b) {
expression1
} else {
expression2
}
कार्यान्वित कैसे करें यदि मैं erlang में अन्य अभिव्यक्ति को कार्यान्वित कैसे करूं?अगर अन्यथा
if(a == b) {
expression1
} else {
expression2
}
if
a == b ->
expr1;
true ->
exprElse
end
वहाँ Erlang में कोई और नहीं असली, तुम सिर्फ सच के साथ मेल है। Erlang documentation पर अधिक जानकारी।
आपको ';' पर ध्यान देना होगा टर्मिनेटर:
if
a == b ->
clauseN,
expr1;
cond2 ->
clause1,
clause2,
expr2;
cond3 ->
expr3;
true ->
exprElse
end
यह कॉपी-पेस्ट अनुकूल भाषा नहीं है।
if
A =:= B ->
expr1;
true ->
expr2
end
या
case A =:= B of
true -> expr1;
false -> expr2
end
या
case A of
B -> expr1;
_ -> expr2
end
या
foo(A,B), ...
...
foo(X,X) -> expr1;
foo(_,_) -> expr2.
पैटर्न मिलान erlangs कई शक्तियों में से एक है और यह अक्सर बयान करता है, तो के बजाय इस्तेमाल किया जा सकता। यह फ़ंक्शन तर्कों पर पैटर्न मिलान के लिए अक्सर अधिक पठनीय होता है या केस अभिव्यक्ति का उपयोग करता है (जो पैटर्न मिलान भी है)।
मान लें कि आपके पास एक कार्य some_function
है जो दो तर्क लेता है। यदि तर्क बराबर हैं तो आप अभिव्यक्ति 1 का मूल्यांकन करते हैं, अन्यथा आप अभिव्यक्ति 2 का मूल्यांकन करते हैं। इसे एरलांग में व्यक्त किया जा सकता है:
some_function(A, A) -> expression1;
some_function(A, B) -> expression2.
यह आश्चर्यजनक है कि आप इस तरह के सरल पैटर्न मिलान के साथ कितना हासिल कर सकते हैं। गार्ड खंड के साथ आप और अधिक जटिल पैटर्न को व्यक्त कर सकते हैं उदाहरण के लिए,
some_function(A, B) when A < B -> expression3.
एक और संभावना एक case .. of
अभिव्यक्ति का उपयोग करने के लिए है। आपका विशिष्ट उदाहरण
case a == b of
true -> expression1;
false -> expression2
end.
लिए अनुवाद होगा (इस मामले में expression2
हमेशा से मूल्यांकन किया जाना है, क्योंकि a
और b
परमाणुओं कर रहे हैं और एक दूसरे से कभी नहीं के बराबर। Erlang में वैरिएबल अपर केस कर रहे हैं।)
आप पढ़ सकते हैं Erlang अभिव्यक्ति here के बारे में अधिक जानकारी।
मैं इसके बजाय '=: =' का उपयोग करने का सुझाव भी दूंगा '==' का। यह वास्तव में एक अच्छा जवाब है - नए एरलांग प्रोग्रामर को हमेशा 'केस' का उपयोग करना चाहिए जब तक उन्हें पता न लगे कि 'if' कथन 'कब' कथन क्यों होना चाहिए था। – archaelus
एक अन्य विकल्प:
case a of
b -> expr1; %% true
_ -> expr2 %% false
end.
भी देखें [इस सवाल] (http://stackoverflow.com/questions/4327860/erlang-equivalent-to-if-else)। – legoscia