2011-03-15 18 views
7
numbers = 1..10 
print numbers.map {|x| x*x} 

# I want to do: 
square = {|x| x*x} 
print numbers.map square 

क्योंकि वाक्यविन्यास अधिक संक्षिप्त है। मुझे def + end का उपयोग किए बिना ऐसा करने का कोई तरीका है?रूबी में ब्लॉक को परिभाषित/नाम कैसे कर सकता हूं?

+0

अलग अलग तरीकों की एक जोड़ी रहे हैं एक बनाने के लिए:

आप क्या कर सकते हैं, एक चर करने के लिए एक Proc वस्तु असाइन करते हैं, और फिर एक ब्लॉक करने के लिए है कि परिवर्तित & एकल उपसर्ग ऑपरेटर का उपयोग है एक वस्तु के रूप में ब्लॉक, जिनमें से कुछ बहिष्कृत हैं। TIMTOWTDI वास्तव में यहां लागू होता है। –

उत्तर

13
square = proc {|x| x**2 } 
print number.map(&square) 
+0

धन्यवाद एलबीजी, वहां क्या करता है और क्या करता है? –

+1

'और 'ब्लॉक को विधि पर ब्लॉक पर प्रो ऑब्जेक्ट को बदलें। –

1
numbers = 1..10 
square = lambda{|x| x*x } 
numbers.map &square 
8

आप एक चर करने के लिए एक ब्लॉक आवंटित नहीं कर सकते क्योंकि एक ब्लॉक वास्तव में एक वस्तु से प्रति नहीं है।

numbers = 1..10 
print numbers.map {|x| x * x } 

square = -> x { x * x } 
print numbers.map &square 
+4

जो भी मेरे उत्तर को संपादित करता है, और दो लोगों ने जो इसे संपादित करने के लिए अनुमोदित किया: यदि आपको पता नहीं है कि आप क्या कर रहे हैं, तो बस नहीं। मुझे अपनी गलतियों को ठीक करने वाले लोगों के साथ कोई समस्या नहीं है, लेकिन * परिचय * उन्हें ठीक नहीं है। मेरा कोड पूरी तरह से काम करता है, आपका न केवल काम नहीं करता है, यह * पार्स * भी नहीं है। –

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