Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在Ruby中,如何在array类中对数组的每个元素求平方?_Arrays_Ruby_Perfect Square - Fatal编程技术网

Arrays 在Ruby中,如何在array类中对数组的每个元素求平方?

Arrays 在Ruby中,如何在array类中对数组的每个元素求平方?,arrays,ruby,perfect-square,Arrays,Ruby,Perfect Square,我的部分代码如下: class Array def square! self.map {|num| num ** 2} self end end 当我打电话时: [1,2,3].square! [1,2,3].map {|num| num ** 2} 我希望得到[1,4,9],但我得到的是[1,2,3]。为什么会这样?当我打电话时: [1,2,3].square! [1,2,3].map {|num| num ** 2} 在课堂方法之外,我得到了正确的答案。你必

我的部分代码如下:

class Array
  def square!
    self.map {|num| num ** 2}
    self
  end
end
当我打电话时:

[1,2,3].square!
[1,2,3].map {|num| num ** 2}
我希望得到[1,4,9],但我得到的是[1,2,3]。为什么会这样?当我打电话时:

[1,2,3].square!
[1,2,3].map {|num| num ** 2}
在课堂方法之外,我得到了正确的答案。

你必须使用,而不是

Array#map
->为self的每个元素调用一次给定的块。创建一个包含块返回的值的新数组

数组#映射->为self的每个元素调用一次给定的块,用块返回的值替换元素


您可以省略
self
行<代码>self.map!{..}
已返回数组销毁原始数组(语句/命令)而不是返回新数组(表达式/函数)的任何原因(性能?)。您可以使用
map
创建一个正方形数组,然后将其丢弃并返回
self