सबसे आम रूप है जब कोष्ठकों विधि परिभाषा तर्क के आसपास के लिए आवश्यक हैं फार्म के नेस्टेड विधि मंगलाचरण है
foo g x,y
जो करने के लिए अनुवाद किया जा सकता:
foo(g(x,y))
हालांकि कोड को foo(g(x),y)
के रूप में व्याख्या किया जा सकता है रूबी एक चेतावनी जारी करता है (* रूबी 1,9 में चेतावनी हटा दी गई है)।
रूबी जारी होने पर एक और मामला यह मामला है जब एक से अधिक तर्क परिभाषित किए जाते हैं।
उत्पन्न होने वाली एक और अस्पष्टता स्थिति वह मामला है जब आप कोष्ठक के साथ विधि का आह्वान करते हैं लेकिन विधि नाम और तर्क के बीच एक स्थान डिलीमीटर के साथ होता है। उदाहरण के लिए
लें:
square (2+2) * 2 # => square (4) * 2 => foo (8) = 64
square(2+2) * 2 # => square(4) * 2 => 16 * 2= 32
पूर्ववर्ती एक निम्न उदाहरण लेते का एक परिणाम के रूप में:
puts(square 2, 2)
यह puts(square(2), 2)
या puts(square(2,2))
रूप में व्याख्या की जा सकती है।
निष्कर्ष: बिना किसी ब्रांड्स के तरीकों का आह्वान और परिभाषित करते समय सतर्क रहें।
स्रोत
2013-02-05 08:59:22
'def a (b) end' अन्यथा आपको अर्धविराम – MarcDefiant