शीर्षक के लिए खेद है, मुझे नहीं पता कि यह वाक्यविन्यास कैसे कहा जाता है।यह कोड रूबी 1.9 पर क्यों संकलित नहीं है लेकिन रूबी 1.8 पर है?
उदाहरण के लिए:
ary = [ [11, [1]], [22, [2, 2]], [33, [3, 3, 3]] ]
# want to get [ [11, 1], [22, 2], [33, 3] ]
रूबी 1,8
ary.map{|x, (y,)| [x, y] }
#=> [[11, 1], [22, 2], [33, 3]]
ary.map{|x, (y)| [x, y] }
#Syntax error, unexpected '|', expecting tCOLON2 or '[' or '.'
#ary.map{|x, (y)| [x, y] }
# ^
रूबी 1,9
ary.map{|x, (y,)| [x, y] }
#SyntaxError: (irb):95: syntax error, unexpected ')'
#ary.map{|x, (y,)| [x, y] }
# ^
ary.map{|x, (y)| [x, y] }
#=> [[11, 1], [22, 2], [33, 3]]
※ मैं एक तरह से वांछित सरणी प्राप्त करने के लिए नहीं कह रहा हूँ।
मैं जानना चाहता हूं कोड का यह टुकड़ा क्यों काम कर रहा है या तो रूबी के संस्करण में से एक है, लेकिन दोनों नहीं।
अनुगामी अल्पविराम 'रूबी 1.8' में की जरूरत थी, तो इसका मतलब यह है वहाँ नियम है कि गायब हो गया किसी तरह का था? – oldergod
मुझे नहीं लगता कि इसकी आवश्यकता बहुत अधिक थी क्योंकि इससे समस्या को हल किया गया था। पूरे ब्लॉक तर्क अर्थशास्त्र को 1.9 में भारी ओवरहाल मिला। डिफ़ॉल्ट और '* args' प्रकार कैच-ऑल के साथ वैकल्पिक तर्क अब समर्थित हैं। यह एक विचित्र व्यवहार है जो एक आइटम के साथ एक सूची की इजाजत नहीं देता है, लेकिन अगर दूसरे वास्तव में नामित किया गया है तो उसे परवाह नहीं किया गया है। – tadman