शुरुआत सवाल माफ कर दो, लेकिन कहते हैं कि मैं एक सरणी है:तर्कों की एक श्रृंखला को देखते हुए, मैं रूबी में किसी विशेष फ़ंक्शन में उन तर्कों को कैसे भेजूं?
a = [1,2,3]
और कहीं एक समारोह; मान लें कि यह एक उदाहरण समारोह किए जाने पर:
class Ilike
def turtles(*args)
puts args.inspect
end
end
मैं कैसे a
साथ Ilike.turtles
आह्वान करते जैसे मैं (Ilike.new).turtles(1,2,3)
बुला रहे थे।
मैं send
से परिचित हूं, लेकिन ऐसा लगता है कि यह किसी सरणी को तर्क सूची में अनुवादित नहीं करता है।
जो मैं खोज रहा हूं उसके समानांतर जावास्क्रिप्ट apply
है, जो call
के समतुल्य है लेकिन सरणी को एक तर्क सूची में परिवर्तित करता है।
शानदार। आपके उत्कृष्ट उत्तर के आधार पर, मुझे [विकीबुक्स] (http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Method_Calls#Variable_Length_Argument_List.2C_Asterisk_Operator) में इस तकनीक का अधिक विस्तृत विवरण मिला है। समानांतर नोटेशन दूसरी तरफ जाने के कारण यह वास्तव में पूरी तरह से उचित है। ओह, रूबी वास्तव में। मैंने यह भी देखा है कि आप 'Ilike.new.turtles (1,2,3, * ए) 'का उपयोग कर अजीब' a.unshift' fidgeting के बिना अपने स्वयं के तर्कों को पूर्ववत कर सकते हैं, हालांकि पोस्टपेन्डिंग को ऐसे मैन्युवर की आवश्यकता होती है। रूबी में –
@ स्टेवेनएक्सू 1.9 आप 'पोस्टपेन्डिंग' के लिए भी विभाजित कर सकते हैं। 'एक = [1,2]; ख = [4,5]; पी (0, * ए, 3, * बी, 6) # => "0 \ n1 \ n2 \ n3 \ n4 \ n5 \ n6" ' – Phrogz
शानदार जवाब दिया! – RubyFanatic