我的部分代码如下:
class Array
def square!
self.map {|num| num ** 2}
self
end
end
当我打电话时:
[1,2,3].square!
我希望得到 [1,4,9],但我得到 [1,2,3]。为什么会这样?当我打电话时:
[1,2,3].map {|num| num ** 2}
在类方法之外,我得到了正确的答案。
我的部分代码如下:
class Array
def square!
self.map {|num| num ** 2}
self
end
end
当我打电话时:
[1,2,3].square!
我希望得到 [1,4,9],但我得到 [1,2,3]。为什么会这样?当我打电话时:
[1,2,3].map {|num| num ** 2}
在类方法之外,我得到了正确的答案。
你必须使用Array#map!
,而不是Array#map
。
Array#map
->为 self 的每个元素调用一次给定块。创建一个包含块返回值的新数组。
Array#map!
->为 self 的每个元素调用一次给定块,将元素替换为块返回的值。
class Array
def square!
self.map! {|num| num ** 2}
end
end
[1,2,3].square! #=> [1, 4, 9]