我正在为Array写一个新方法,即
class Array
def my_new_method!
...
other_array = ....
# Want to set self to other_array. How?
end
end
正如评论所指出的,我在Array#my_new_method!
内计算了一个新数组other_array
(在我的情况下,它恰好具有与{{1} }),我想将self
表示的Array的所有元素设置为self
中的相应元素。我当然可以做
other_array
但是也许有更简单的方法?我查看了方法other_array.each_with_index |element, i|
self[i] = element
end
和map!
,它们似乎遵循相似的方向,但是看不到如何合理地应用它们。
例如,如果我有
fill
我做
a=[2,6,4]
,在a.my_new_method!
中,my_new_method!
会变成[1,2,3],我希望a也是[1,2,3]。这个示例看起来有些虚假,因为如果other_array
不是Array的实例方法,而是某个外部方法
my_new_method!
会做这份工作。就我而言,这无济于事,因为我不能做
a = my_new_method(a)
在self = other_array
内部。
答案 0 :(得分:3)
您可以调用replace
用另一个数组的内容替换您的数组的内容:
class Array
def my_new_method!
other = [1, 2, 3]
replace(other)
end
end
a = [:foo, :bar, :baz]
a.my_new_method!
a #=> [1, 2, 3]