2010-03-05 15 views
10

रूबी को समझने के लिए थोड़ा बेहतर कोशिश कर रहा है, मैं इस कोड इंटरनेट पर सर्फिंग में भाग:इस रूबी कोड में मानचित्र (और: नाम) क्या करता है?

require 'rubygems' 
require 'activeresource' 



ActiveResource::Base.logger = Logger.new("#{File.dirname(__FILE__)}/events.log") 

class Event < ActiveResource::Base 
    self.site = "http://localhost:3000" 
end 

events = Event.find(:all) 
puts events.map(&:name) 

e = Event.find(1) 
e.price = 20.00 
e.save 

e = Event.create(:name  => "Shortest event evar!", 
       :starts_at => 1.second.ago, 
       :capacity => 25, 
       :price  => 10.00) 
e.destroy 

क्या मैं विशेष रूप से कैसे events.map(&:name) काम करता है में दिलचस्पी रखता हूँ? मैं देखता हूं कि घटनाएं एक सरणी है, और इस प्रकार यह अपनी नक्शा विधि का आह्वान कर रही है। अब मेरा सवाल यह है कि, ब्लॉक को नक्शा में पारित किया जा रहा है? प्रतीक क्या है: इस संदर्भ में नाम? मैं यह समझने की कोशिश कर रहा हूं कि यह कैसे काम करता है।

+2

यह * सात * अलग-अलग प्रश्नों का सटीक डुप्लिकेट है। और मेरा विश्वास करो, रूबी ने पिछले 3 हफ्तों में इतना नहीं बदला है, इसलिए उत्तर शायद वही होंगे: http://StackOverflow.Com/questions/99318/, http://StackOverflow.Com/questions/1217088 /, http://StackOverflow.Com/questions/1792683/, http://StackOverflow.Com/questions/1961030/, http://StackOverflow.Com/questions/2096975/, http://StackOverflow.Com/प्रश्न/2211751 /, http://StackOverflow.Com/questions/2259775/। –

उत्तर

21
events.map(&:name) 

वास्तव में करने के लिए

events.map{|x| x.name} 

यह सिर्फ सुविधाजनक वाक्यात्मक चीनी है बराबर है।

अधिक जानकारी के लिए, Symbol#to_proc विधि here देखें। यहां, :name को एक proc के लिए मजबूर किया जा रहा है।

वैसे, यह अक्सर यहां आता है - यह Google के लिए बहुत मुश्किल है या अन्यथा 'एम्पर्सेंड के साथ कोलन चीज़' की खोज करें :)।

+3

शायद, अब आपने "एम्पर्सेंड के साथ कोलन चीज" का उल्लेख किया है, यह उठाया जाना शुरू हो जाएगा :) – theIV

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