The Ruby Programming Language पी .164 के अनुसार।एक प्रारंभ ब्लॉक का मूल्य निर्धारित कैसे किया जाता है?
एक
begin
बयान एक अपवाद का प्रचार नहीं करता है, तो मूल्य बयान के पिछले अभिव्यक्तिbegin
,rescue
याelse
खंड में मूल्यांकन का मूल्य है।
लेकिन मैं इस व्यवहार के अनुरूप पाया बाकी खंड के साथ एक साथ ब्लॉक शुरू और खंड करता है।
def fact (n)
raise "bad argument" if n.to_i < 1
end
value = begin
fact (1)
rescue RuntimeError => e
p e.message
else
p "I am in the else statement"
ensure
p "I will be always executed"
p "The END of begin block"
end
p value
उत्पादन होता है:
"I am in the else statement"
"I will be always executed"
"The END of begin block"
"I am in the else statement"
[Finished]
value
बाकी खंड लिए मूल्यांकन किया जाता है
यहाँ उदाहरण कोड है। यह असंगत व्यवहार है क्योंकि सुनिश्चित करें कि खंड अंतिम कथन निष्पादित किया गया है।
कोई व्यक्ति बता सकता है कि प्रारंभिक ब्लॉक में क्या हो रहा है?
"कोड के ब्लॉक पिछले बयान निष्पादित के लिए मूल्यांकन किया जाता है"। यह स्पष्ट रूप से एक गलत धारणा है। –
क्षमा करें, अधिक विशिष्ट कथन और संदर्भ के साथ सही है। – steveyang
अब आपने खुद से सवाल का जवाब दिया: "शुरू करें, बचाव करें या अन्यथा" वास्तव में सही क्रम है, इसलिए यह विनिर्देश के अनुरूप है। –