अमृत नहीं 'बाहर तोड़' कीवर्ड कि अन्य भाषाओं में 'वापसी' कीवर्ड के बराबर होगा है ।
आमतौर पर आप जो करेंगे, वह आपके कोड को दोबारा तैयार करेगा ताकि अंतिम विवरण निष्पादित किया गया वापसी मूल्य है।
नीचे, अमृत में एक मुहावरेदार तरीका है अपने कोड परीक्षण के बराबर प्रदर्शन करना है यह सोचते हैं आप का मतलब है 'एक' कुछ है कि अपने प्रारंभिक उदाहरण की तरह सरणी की तरह बर्ताव करता है के रूप में:
def is_there_a_22(a) do
Enum.any?(a, fn(item) -> item == "22" end.)
end
क्या वास्तव में हो रहा है यहां हम अपनी सोच को थोड़ा सा पुनर्गठन कर रहे हैं। प्रक्रियात्मक दृष्टिकोण के बजाय, जहां हम सरणी के माध्यम से खोज करेंगे और अगर हम पाते हैं कि हम जो खोज रहे हैं, तो हम जल्दी वापस आ जाएंगे, हम पूछेंगे कि कोड स्निपेट में वास्तव में आप क्या कर रहे हैं: "क्या इस सरणी में 22 है कहीं भी? "
हम फिर हमारे लिए सरणी के माध्यम से चलाने के लिए elixir Enum लाइब्रेरी का उपयोग करने जा रहे हैं, और एक परीक्षण के साथ any?
फ़ंक्शन प्रदान करते हैं जो हमें बताएगा कि क्या कुछ भी हमारे द्वारा मानी जाने वाली मानदंडों से मेल खाता है।
हालांकि यह एक ऐसा मामला है जिसे आसानी से गणना के साथ हल किया जाता है, मुझे लगता है कि यह संभव है कि आपके प्रश्न का दिल प्रक्रियात्मक तरीकों में उपयोग किए जाने वाले 'बाउंसर पैटर्न' जैसी चीजों पर अधिक लागू हो। उदाहरण के लिए, यदि मैं किसी विधि में कुछ मानदंडों को पूरा करता हूं, तो तुरंत वापस आएं। इस का एक अच्छा उदाहरण के लिए एक विधि है कि झूठे रिटर्न हो सकता है अगर बात आप पर काम करने के लिए जा रहे हैं रिक्त है:
function is_my_property_true(obj) {
if (obj == null) {
return false;
}
// .....lots of code....
return some_result_from_obj;
}
एक ही रास्ता वास्तव में अमृत में यह पूरा करने के सामने गार्ड डाल करने के लिए है और एक विधि को अलग:
def test_property_val_from_obj(obj) do
# ...a bunch of code about to get the property
# want and see if it is true
end
def is_my_property_true(obj) do
case obj do
nil -> false
_ -> test_property_value_from_obj(obj)
end
end
tl; डॉ - कोई वहाँ एक बराबर नहीं है - आप उसके अनुसार अपनी कोड की संरचना करने की जरूरत है। फ्लिप पक्ष पर, यह आपके तरीकों को छोटा रखने के लिए रहता है - और आपका इरादा स्पष्ट है।
यहां एक और उदाहरण है कि कैसे जल्दी लौटना है: http: //elixir-examples.github।आईओ/उदाहरण/वापसी-शुरुआती – Brandon
@ ब्रैंडन, धन्यवाद आदमी, तो उस उदाहरण में यदि "some_condition" गलत है तो यह मान को आउटपुट करेगा "do_something()" outputs? –
यह एक बेवकूफ सवाल नहीं है। जब किसी को अनिवार्य भाषाओं में उपयोग किया जाता है तो अंतिम मूल्य की गणना करने वाले प्रत्येक फ़ंक्शन की धारणा के आदी होने के लिए वास्तव में कठिन होता है। इसके साथ चिपकाएं - एक बार जब आप एक मूल्य लौटने वाले प्रत्येक फ़ंक्शन के विचार के लिए उपयोग करते हैं तो आप पाएंगे कि आपके कार्य अधिक समेकित हो जाएंगे। –