रूबी दुर्भाग्य से कुछ अलग है। पुनश्च: अगर मैं गलत हूं तो मेरी स्मृति इस पर क्षमा याचना करने योग्य है
ब्रेक / जारी रखने के बजाय, इसमें ब्रेक / अगला है, जो छोरों के संदर्भ में समान व्यवहार करता है
लूप्स (हर चीज की तरह) भाव हैं, और आखिरी चीज जो उन्होंने की थी उसे "वापस" करें। अधिकांश समय, लूप से रिटर्न वैल्यू प्राप्त करना व्यर्थ है, इसलिए हर कोई बस यही करता है
a = 5
while a < 10
a + 1
end
हालाँकि आप ऐसा कर सकते हैं
a = 5
b = while a < 10
a + 1
end # b is now 10
फिर भी, बहुत सारे रूबी कोड एक ब्लॉक का उपयोग करके एक लूप का 'अनुकरण' करते हैं। विहित उदाहरण है
10.times do |x|
puts x
end
जैसा कि लोगों के लिए ब्लॉक के परिणाम के साथ चीजें करना चाहते हैं, यह बहुत आम है, यह वह जगह है जहां यह गड़बड़ हो जाता है। किसी खंड के संदर्भ में विभिन्न चीजों को तोड़ना
ब्रेक कोड से बाहर कूद जाएगा जिसे ब्लॉक कहा जाता है
अगला ब्लॉक में बाकी कोड को छोड़ देगा, और ब्लॉक के कॉलर को जो आप निर्दिष्ट करेंगे उसे 'वापस' कर देंगे। यह उदाहरण के बिना कोई मतलब नहीं है।
def timesten
10.times{ |t| puts yield t }
end
timesten do |x|
x * 2
end
# will print
2
4
6
8 ... and so on
timesten do |x|
break
x * 2
end
# won't print anything. The break jumps out of the timesten function entirely, and the call to `puts` inside it gets skipped
timesten do |x|
break 5
x * 2
end
# This is the same as above. it's "returning" 5, but nobody is catching it. If you did a = timesten... then a would get assigned to 5
timesten do |x|
next 5
x * 2
end
# this would print
5
5
5 ... and so on, because 'next 5' skips the 'x * 2' and 'returns' 5.
तो हाँ। रूबी कमाल है, लेकिन इसमें कुछ भयानक कोने-मामले हैं। यह दूसरा सबसे बुरा है जिसे मैंने अपने उपयोग के वर्षों में देखा है :-)