मैं सरल उदाहरण निकाले:रूबी ब्लॉक और unparenthesized तर्क
require 'pp'
x = 1..3
pp x.map do |i| {:value => i, :double => (i*2)} end
pp x.map { |i| {:value => i, :double => (i*2)} }
pp(x.map do |i| {:value => i, :double => (i*2)} end)
pp(x.map { |i| {:value => i, :double => (i*2)} })
मैं सोच रहा हूँ क्यों पहले पीपी का उत्पादन:
[1, 2, 3]
जबकि सभी oders दे रहे हैं:
[{:value=>1, :double=>2}, {:value=>2, :double=>4}, {:value=>3, :double=>6}]
मैं मान लें कि ऑपरेटर की प्राथमिकता के साथ इसका कुछ संबंध है। मुझे अच्छी व्याख्या कहां मिल सकती है?
यह [रूबी ब्लॉक सिंटेक्स त्रुटि] (http://StackOverflow.Com/q/6854283/) का डुप्लिकेट है, [कोड ब्लॉक प्रत्येक 'प्रत्येक' कार्यों को ब्रैकेट के साथ पास करता है लेकिन 'do'-'end' (ruby)] के साथ नहीं (http://StackOverflow.Com/q/6718340/), [ब्लॉक परिभाषा - ब्रेसिज़ और' do'-'end' के बीच अंतर?] (http://StackOverflow.Com/q/6179442/), [रूबी मल्टीलाइन ब्लॉक 'do'' end' के बिना] (http://StackOverflow.Com/q/3680097/), ['do' ब्लॉक बनाम ब्रैकेट' {} ' ] (http://StackOverflow.Com/q/2122380/) और [रुबी में इन ब्लॉक कोडिंग शैलियों का अंतर या मूल्य क्या है?] (http://StackOverflow.Com/q/533008/)। –
इस पोस्ट तिथि में रूबी-2.2.0 का उपयोग करके एक प्राइ सत्र का भाग। pp_hash = x.map do | i | {: value => i,: double => (i * 2)} => [{: value => 1,: double => 2}, {: value => 2,: double => 4} , {: value => 3,: double => 6}] pp_hash.join (",") "{: value => 1,: double => 2}, {: value => 2,: डबल => 4}, {: मूल्य => 3,: डबल => 6} " जो जेसन के आज के उपयोग में शायद अधिक वांछनीय है लेकिन यह केवल आउटपुट पढ़ने के लिए शैली का मामला है। कभी-कभी इससे कोई फर्क नहीं पड़ता कि आप किस कोड को पास करने जा रहे हैं जब तक आपका कोड सही प्रकार को संभाल सके। pp_hash = pp_hash.join (",") –
यह एक टैंगेंट पर जाने से पहले मुझे वास्तव में मिला। यह प्राइ में पहला हिस्सा है .... [53] pry (मुख्य)> पीपी x.map do | i | {: key => i,: value => (i * 2)} अंत # <गणनाकर्ता: ...> => # <गणक: ...> –