2016-01-21 10 views
5

यह ठीक है:रुबी में एक शून्य मूल्य अभिव्यक्ति त्रुटि को वापस क्यों करें या बी?

def foo 
    a or b 
end 

यह भी ठीक है:

def foo 
    return a || b 
end 

यह रिटर्न void value expression:

def foo 
    return a or b 
end 

क्यों? इसे निष्पादित भी नहीं किया जाता है; यह वाक्यविन्यास जांच में विफल रहता है। void value expression का क्या अर्थ है?

+0

है यह कोई डुप्लिकेट नहीं है। मैंने '||' ऑपरेटर के सभी संदर्भ हटा दिए हैं और सवाल अभी भी खड़ा है। कृपया पुनः खोलें – Shelvacu

+0

कृपया उत्तर को अमान्य करने के लिए अपने प्रश्न को संपादित न करें। http: //meta.stackoverflow.com/questions/290297/how-much-change-to-the-question-is-too-much \ –

+0

@MsYvette मुझे खेद है, मुझे इसे ध्यान में रखना चाहिए था। हालांकि, मुझे उम्मीद है कि यह अभी भी दिखा सकता है कि जिस प्रश्न को इसे डुप्लिकेट के रूप में चिह्नित किया गया है, वह मेरे प्रश्न का उत्तर नहीं देता है। – Shelvacu

उत्तर

6

return a or b(return a) or b रूप में व्याख्या की है, और इसलिए return a का मूल्य (return a) or b के मूल्य की गणना करने के लिए आवश्यक है, लेकिन (क्योंकि यह उस स्थिति से भाग जाती है) return के बाद से कभी नहीं जगह में एक मूल्य के छोड़ देता है, यह एक वापस जाने के लिए नहीं बनाया गया है मूल स्थिति में वैध मान। और इसलिए पूरी अभिव्यक्ति (some_void_value) or b के साथ छोड़ी गई है, और अटक गया है। यही इसका मतलब है।

2

, बस क्योंकि orlower precedence|| से जिसका अर्थ है return a निष्पादित किया जाएगा or b से पहले, or b इसलिए नहीं पहुंचा जा सकता

संबंधित मुद्दे