如何在迭代数组时正确修改数组

How to properly modify an array while iterating it

在 Crystal 中,我想更改正在迭代的数组 我这样做:

strings = ["A","B","C"]

i = 0
strings.each do |string|
  strings[i] = string * 2
  i += 1
end

虽然这不是最糟糕的事情,但我觉得应该有一种更惯用的方式来实现它,比如:

strings = ["A","B","C"]

strings.each do |string|
  string = string * 2
end

Chrystal 有这样的可能吗? 在这种情况下,最好是不需要额外变量的东西,例如 i 。 如果是这样,它被认为是一种好的做法吗?

您可能正在寻找 Array#map!

在这种情况下 strings.map! {|string| string*2} 完全相同。