दिलचस्प पोस्ट
स्विफ्ट में एक तर्क के रूप में किसी भी प्रकार के नंबर को लेने के लिए सामान्य फ़ंक्शन के लिए एक प्रकार के प्रोटोकॉल को कैसे अपनाना चाहिए? एंड्रॉइड पर आंतरिक एप स्टोरेज से बाहरी स्टोरेज तक फाइल को कैसे ले जाना / बदलना है? कैसे printf का उपयोग कर एक चार को दोहराएँ? ":" (बृहदान्त्र) सी स्ट्रेट में – इसका क्या अर्थ है? सीएसएस सामग्री मूल्य में यूनिकोड वर्ण रखकर अवैध अनाम प्रकार के सदस्य घोषणापत्र आईओएस ऐप पर भुगतान स्वीकार करते हैं? कैसे एक सी समारोह में स्विफ्ट तार की एक सरणी को पार करने के लिए एक char ** पैरामीटर ले बिट-वार ऑपरेशन अनारी ~ (इनवर्ट) सूचकांक के साथ विदेशी मुद्रा Xcode के तहत आर्किटेक्चर x86_64 के लिए डुप्लिकेट प्रतीकों क्या HTML5 को ड्रैग-ड्रॉप फ़ोल्डर्स या फ़ोल्डर ट्री का अपलोड करना है? "पहले से ही एक खुला डेटारिडर है …" पुनः प्रयोग या डिबोज़ डीबी कनेक्शनों? एंड्रॉइड: एक स्क्रॉल समाप्त हो गया है जब पता लगाने के लिए कैसे NullPointerException स्टैक ट्रेस डीबग एजेंट के बिना उपलब्ध नहीं है

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

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

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

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

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

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

 # 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 पर एक अंतिम उत्तर है

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