2012-01-31 71 views
28

Tôi muốn thêm phần tử vào mảng nhưng mà không thực sự thay đổi mảng đó và thay vào đó nó sẽ trả về một mảng mới. Nói cách khác, tôi muốn tránh:thêm phần tử vào mảng ruby ​​trả về mảng mới

arr = [1,2] 
arr << 3 

nào sẽ trở lại:

[1,2,3] 

Thay đổi arr riêng của mình. Làm cách nào để tránh điều này và tạo một mảng mới?

Trả lời

36

Bạn có thể dễ dàng thêm hai mảng trong Ruby với toán tử plus. Vì vậy, chỉ cần tạo một mảng trong phần tử của bạn.

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

hoàn hảo. Cảm ơn! – srchulo

+5

Tại sao không có cách nào trong ruby ​​để thêm một mục vào một mảng có ảnh hưởng đến mảng ban đầu? – gitb

+0

@gitb Phương thức mảng # + thực hiện điều này; nó tạo ra một mảng mới từ phía bên tay trái và phía bên tay phải của toán tử cộng và trả về mảng mới, để lại cả hai toán hạng chưa sửa đổi. – rodamn

6

nó cũng hoạt động bằng cách mở rộng arr sử dụng nhà điều hành *

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

Được đánh dấu là nó, chậm hơn nhiều – user3033467

Các vấn đề liên quan