दिलचस्प पोस्ट
पिछले और अगले पृष्ठ सीमाओं के साथ ViewPager एंड्रॉइड मल्टीडीएक्स सपोर्ट लाइब्रेरी एक्लिप्स से एक हैश तालिका कैसे काम करती है? नए टैब पर स्विच किए बिना जावा में नया टैब कैसे खोल सकता है? जावास्क्रिप्ट फ़ंक्शन ऑर्डर: क्यों यह फ़र्क पड़ता है? यूआरएलआईबी 2 के टाइमआउट को संभालना? – पायथन IEnumerable <T> को लागू करने में समस्याएं ImportError: मॉड्यूल नामित अनुरोध नहीं है कुंजी पर आधारित PHP बहुआयामी सरणी को सॉर्ट करें? ActiveRecord में बनाने पर आईडी ओवरराइड करना एंड्रॉइड आईसीएस (4.0) में होम बटन को अक्षम करें कैसे NVIDIA CUDA में आंतरिक कर्नेल समय को मापने के लिए? बिग-ओह बनाम बिग-थेटा AngularJS में IE कैश को रोकने के लिए बेहतर तरीका है? एसक्यूएल सर्वर 2005 पिवॉट कॉलम की अज्ञात संख्या पर

ब्लॉक परिभाषा – ब्रेसिज़ और एंड-एंड में अंतर?

कोई भी यह बता सकता है कि निम्न कोड एक त्रुटि के साथ क्यों रोकता है

irb(main):186:0> print ((1..10).collect do |x| x**2 end) SyntaxError: (irb):186: syntax error, unexpected keyword_do_block, expecting ')' print ((1..10).collect do |x| x**2 end) ^ (irb):186: syntax error, unexpected keyword_end, expecting $end print ((1..10).collect do |x| x**2 end) ^ from /usr/bin/irb:12:in `<main>' 

जबकि एक ही कार्यक्षमता के साथ निम्नलिखित कोड अपेक्षित काम करता है?

 irb(main):187:0> print ((1..10).collect { |x| x**2 }) [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]=> nil 

मैंने विश्वास किया कि घुंघराले-ब्रेसिज़ "{}" ब्लॉक परिभाषा में "अंततः" अंतःस्थापित कर सकते हैं I

मुझे पता है कि मैं प्रिंट विधि और पहले कोष्ठक के बीच एक अंतरिक्ष को छोड़कर पहली कॉल "ठीक" कर सकता हूं, लेकिन मुझे स्पष्टीकरण में दिलचस्पी है कि वह अलग-अलग क्यों व्यवहार करता है

वेब के समाधान से एकत्रित समाधान "ब्लॉक परिभाषा – ब्रेसिज़ और एंड-एंड में अंतर?"

अंतर पूर्वता है:

 # Equivalent to puts( (1..10).map { |i| i*2 } ) > puts (1..10).map { |i| i*2 } 2 4 6 8 10 12 14 16 18 20 => nil # Equivalent to puts( (1..10).map ) { |i| i*2 } > puts (1..10).map do |i| i*2 end #<Enumerator:0x928f24> => nil 

पहले मामले में, ब्लॉक map करने के लिए पारित किया गया है, और सब कुछ ठीक से काम करता है। दूसरे मामले में, ब्लॉक को पास करने के लिए पारित किया जाता puts , जो इसके साथ कुछ भी नहीं करता है। map एक ब्लॉक प्राप्त नहीं करता है और सिर्फ एक गणक देता है

सिंटैक्स त्रुटि के लिए, यदि आप print और ( सब कुछ काम करता है) के बीच की जगह निकालते हैं;

फर्क यह है कि क्या रूबी अपने कणों को विधि तर्क सीमांकक के रूप में इलाज कर रहा है या यह एक सामान्य विवरण समूह है या नहीं। मुझे यकीन नहीं है कि वहां पर सटीक अंतर है लेकिन यह सूक्ष्म और परेशान है

पहले से ही SO पर एक अंतिम उत्तर है

दुर्भाग्य से, रूबी के पीछे निश्चित रूप से कम से कम आश्चर्य दर्शन का कोई अच्छा प्रदर्शन नहीं है।