2012-01-31 18 views
28

मैं एक सरणी में एक तत्व जोड़ना चाहता हूं लेकिन बिना वास्तव में उस सरणी को बदल रहा है और इसके बजाय यह एक नया लौटा रहा है। दूसरे शब्दों में, मैं से बचना चाहते हैं:रूबी सरणी में नया तत्व जोड़ें

arr = [1,2] 
arr << 3 

कौन सा वापसी होगी:

[1,2,3] 

ही आगमन बदल रहा है। मैं इससे कैसे बच सकता हूं और एक नया सरणी बना सकता हूं?

उत्तर

36

आप रूबी में plus ऑपरेटर के साथ आसानी से दो सरणी जोड़ सकते हैं। तो, बस अपने तत्व से एक सरणी बनाओ।

arr = [1, 2] 
puts arr + [3] 
# => [1, 2, 3] 
puts arr 
# => [1, 2] 
+0

सही आगमन का विस्तार करके काम करता है। धन्यवाद! – srchulo

+5

मूल सरणी को प्रभावित करने के साथ किसी सरणी में कोई आइटम जोड़ने के लिए रूबी में कोई रास्ता क्यों नहीं है? – gitb

+0

@gitb सरणी # + विधि यह करता है; यह बाएं हाथ की ओर से एक नई सरणी बनाता है और प्लस ऑपरेटर के दाएं हाथ की ओर जाता है और नई सरणी देता है, जिससे दोनों ऑपरेंड अनमोडिफाइड होते हैं। – rodamn

6

यह भी का उपयोग कर * ऑपरेटर

arr = [1,2] 
puts [*arr, 3] 
=> [1, 2, 3] 
+0

इसे बेंचमार्क किया गया, यह बहुत धीमा है – user3033467

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