【问题标题】:How to properly modify an array while iterating it如何在迭代时正确修改数组
【发布时间】:2021-08-08 19:14:12
【问题描述】:

在 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。 如果是这样,这是否被认为是一种好的做法?

【问题讨论】:

    标签: arrays loops crystal-lang


    【解决方案1】:

    您可能正在寻找Array#map!

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

    【讨论】:

      猜你喜欢
      • 2016-03-26
      • 2010-12-18
      • 2020-05-29
      • 1970-01-01
      • 2017-03-04
      • 2017-08-16
      • 2017-09-25
      • 2022-06-12
      • 1970-01-01
      相关资源
      最近更新 更多