在.each中使用公式后,数组中的数字不会更改

时间:2014-01-17 17:31:57

标签: ruby arrays map ruby-1.8.7

我拥有的是:

p(array)
array.each { |c| c=c*y**z-1 ; z=z+1  }
p(array)

数组是:

[35, 35, 35]

y为36,z为计数器,c为数组中的值。

在我得到公式之前:

[35, 35, 35]

[formula happens]

在公式之后:

[35, 35, 35]

2 个答案:

答案 0 :(得分:7)

要修改数组本身,请使用#map!,而不是Array的{​​{3}}方法。因为#each方法仅用于Array的值枚举或包含Enumerable模块的其他类。因此,请执行以下操作:

array.map! { |c| c=c*y**z-1 ; z=z+1 ; c }

答案 1 :(得分:3)

Array类中的each方法不会改变现有实例。它只是迭代它。您应该使用collect!方法。