2009-11-24 9 views
5

मैंने अभी यह जवाब Converting upper-case string into title-case using Ruby पढ़ा है।रूबी में 'और: पूंजीकरण' वास्तव में क्या है?

कोड

"abc".split(/(\W)/).map(&:capitalize).join 

बिल्कुल &:capitalize क्या है की निम्न पंक्ति नहीं है? इससे पहले कि मैंने इसे खुद को irb में रखा था, मैंने आपको बताया होगा, यह वैध रूबी वाक्यविन्यास नहीं है। यह किसी प्रकार का Proc ऑब्जेक्ट होना चाहिए, क्योंकि Array#map मानक एक ब्लॉक लेता है। लेकिन यह नहीं है। अगर मैं इसे अकेले irb में डालता हूं, तो मुझे syntax error, unexpected tAMPER मिलता है।

+0

कारण यह आपके लिए आईआरबी में काम नहीं करता है क्योंकि शायद sepp2k कहता है, यह केवल रूबी 1.8.7 में मानक लाइब्रेरी में बेक किया गया था, और मुझे लगता है कि आप पहले के संस्करण को चला रहे हैं। आप इसे अक्सर बार-बार देखते हैं, क्योंकि सक्रिय समर्थन भी इसमें फेंकता है, और ActiveSupport रेल के साथ आता है। यदि आप इसे रेल की स्क्रिप्ट/कंसोल में आज़माते हैं तो आप शायद यह काम करेंगे। –

+0

संभव डुप्लिकेट [रूबी में नक्शा (और: नाम) का क्या अर्थ है?] (Http://stackoverflow.com/questions/1217088/what-does-mapname-mean-in-ruby) –

उत्तर

6

foo(&a_proc_object)a_proc_object को एक ब्लॉक में बदलता है और उस ब्लॉक के साथ foo कॉल करता है।

foo(&not_a_proc_object)पर to_proc पर कॉल करता है और फिर to_proc द्वारा ब्लॉक में एक ऑब्जेक्ट को लौटाता है और उस ब्लॉक के साथ foo कॉल करता है।

रूबी 1.8.7+ और सक्रिय समर्थन Symbol#to_proc को एक प्रो को वापस करने के लिए परिभाषित किया गया है जो प्रो को तर्क पर प्रतीक द्वारा नामित विधि को कॉल करता है।

संबंधित मुद्दे