【问题标题】:Obtain increment value in a non-numeric array loop/在非数字数组循环中获取增量值/
【发布时间】:2014-08-12 00:33:42
【问题描述】:

在顺序数值数组上循环时,很容易获得当前循环迭代的计数。

(1..5)each do |num|
  @output[num] = num
end

但是如果我需要循环一个对象集合(不是顺序数字集合),我如何获得循环的增量值?

@objects.each do |obj|
  @output[obj] = obj.name
end

显然,索引是无效的。什么是 ruby​​ 方法来做这里明确的意图(获得一个与循环周期计数相对应的显式数字整数?

【问题讨论】:

  • each_with_index 是否符合您的要求? apidock.com/ruby/Enumerable/each_with_index
  • 是的!请回答,我会接受
  • 你想要@objects.each { |obj| @output << obj.name }吗?那么@output[i] 等于@object[i].name。这也可以写成@object = @objects.map { |obj| obj.name }。无论如何,您不需要索引。
  • 如果没有其他人这样做,我明天会向你们的 cmets 致辞。请注意,我没有收到您离开 cmets 的通知,因为您没有包含我的 SO @username。我看到他们只是偶然。
  • 您的两个问题的答案都是“是”。

标签: ruby arrays loops collections


【解决方案1】:

使用each_with_index 方法。它遍历集合的元素,为您提供项目和索引。它也适用于无序枚举,尽管顺序可能不一致。

【讨论】:

    猜你喜欢
    • 2016-10-17
    • 2017-08-15
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多