【问题标题】:How to write negative loop in ruby like for(i=index; i >= 0; i --)如何在 ruby​​ 中编写负循环,例如 for(i=index; i >= 0; i --)
【发布时间】:2012-01-19 13:04:51
【问题描述】:

如何在 Ruby 中编写一个倒计时循环,类似于下面的 C 风格 for 循环?

for (i = 25; i >= 0; i--) { 
    print i;
}

【问题讨论】:

  • 请注意,您的问题应为for (i = index; i >= 0; i--)
  • 如果您是 ruby​​ 新手,为什么您的个人资料显示您有 5 年的 RoR 经验?
  • 是的,mark :),我之前是一名 php 开发人员
  • @MarkThomas 除非 ror_master 编辑了他的个人资料,否则其中没有任何内容表明他的 5 年经验如何在各种平台上崩溃。
  • 虽然这在技术上是正确的,但它 列在首位,而且您不会认为'ror_master' 几乎没有Ruby 经验。这似乎具有误导性。

标签: ruby loops


【解决方案1】:

在 Ruby 中有很多方法可以执行递减循环:

第一种方式:

for i in (10).downto(0)
  puts i
end

第二种方式:

(10).downto(0) do |i|
  puts i
end

第三种方式:

i=10;
until i<0
  puts i
  i-=1
end

【讨论】:

  • 第一种方式包含无关的括号,并且不是很惯用。第二种方式还包含无关的括号,有一个不必要的“每个”,并且有不必要的引号和变量插值。第三种方式完全被打破了。
  • @MarkThomas:我认为多余的括号是为了让像我这样的新 Ruby 用户看起来不那么尴尬。在 Javascript 中,同样的事情是可能的,但您需要使用两个点(小数点和属性访问器):65536..toExponential()。这是一种允许属性访问的有点尴尬的方式,所以我想它至少不是很常见,在其他语言中可以使用点直接访问数字的属性。
【解决方案2】:

一种方式:

25.downto(0) do |i|
  puts i
end

【讨论】:

  • 我猜你发现不能像这样使用范围 ;-)
  • 那是别人的答案,已删除。当这正是 downto 的用途时,我不会想到使用范围。
  • 那么对不起。我被这个答案逗乐了,但没记住名字:-)
  • 当我第一次输入它时,我确实有一个“每个”。几秒钟后,我意识到每个都没有必要并删除它。
  • 确实——在这种特殊情况下不需要使用枚举器(但这是完全合法的)。
【解决方案3】:

downto 很好,但也有更通用的step

25.step(0, -1){|i| puts i}

【讨论】:

    【解决方案4】:

    试试这个:

    25.downto(0) { |i| puts i }
    

    【讨论】:

      【解决方案5】:

      以防万一您已经在使用范围:

      rng = 0..6
      rng.reverse_each { |i| p i }
      

      编辑 - 更简洁:

      puts(rng.to_a.reverse)
      

      【讨论】:

        【解决方案6】:

        这里有一个更简单的:

        (0..25).reverse_each { |i| print i }
        

        【讨论】:

          【解决方案7】:

          打印反向数组元素:

          nummarray = [3,4,7,3,6,8]
          
          (numarray.length-1).downto(0){ |i| print numarray[i] }
          

          【讨论】:

            猜你喜欢
            • 2022-12-17
            • 1970-01-01
            • 1970-01-01
            • 2018-01-11
            • 2011-06-14
            • 2022-01-05
            • 2016-03-18
            • 2017-04-28
            • 1970-01-01
            相关资源
            最近更新 更多