我有以下代码:
Array.class_eval do
def abs_sort
new_array = self
self.each do |x|
new_array.push(x.abs)
end
return new_array.sort
end
end
Run Code Online (Sandbox Code Playgroud)
当我尝试运行代码时:
[1, 4, -2].abs_sort
Run Code Online (Sandbox Code Playgroud)
没有任何反应,只是显示一个空白屏幕.为什么?
您需要设置new_array为一个实际的新数组,而不是self:
new_array = []
Run Code Online (Sandbox Code Playgroud)
发生的事情是,既然new_array是self,你在迭代它时将项添加到数组的末尾,这意味着迭代永远不会结束,因为你总是有更多的项,并且你的方法无限循环.
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |