2012-01-31 3 views
28

배열에 요소를 추가하고 싶습니다. 실제로 배열을 변경하지 않고 새로운 배열을 반환합니다. 즉, 내가 피하고 싶은 :루비 배열에 요소 추가

arr = [1,2] 
arr << 3 

반환 어느 :

[1,2,3] 

자체 ARR 변경. 어떻게 이것을 피하고 새 배열을 만들 수 있습니까?

답변

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

Benchmarked, 훨씬 느립니다. – user3033467