【问题标题】:Start a loop from 1从 1 开始循环
【发布时间】:2011-04-24 20:12:55
【问题描述】:

我最近想到了一个可怕的想法,即 Ruby 中的 Integer.count 循环从 0 开始,然后转到 n-1,同时玩 Facebook 工程难题。我做了一个肮脏的修复,在开始时向块变量添加一个,以便它从一个开始。

有没有更漂亮的方法?

例子:

10.times do |n|
    n += 1
    puts n
end #=> 012345789

【问题讨论】:

    标签: ruby loops


    【解决方案1】:

    Ruby 支持多种计数和循环方式:

    1.upto(10) do |i|
      puts i
    end
    
    >> 1.upto(10) do |i|
     >     puts i
    |    end #=> 1
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    

    还有step 而不是upto,它允许您按步长递增:

    >> 1.step(10,2) { |i| puts i } #=> 1
    1
    3
    5
    7
    9
    

    【讨论】:

      【解决方案2】:

      你可以使用range:

      (1..10).each { |i| puts i }
      

      范围让您可以完全控制开始和结束索引(只要您想从较低的值变为较高的值)。

      【讨论】:

        【解决方案3】:

        试试

        (1..10).each do |i|
         #  ... i goes from 1 to 10
        end
        

        相反。当i 的值很重要时,它也更容易阅读。

        【讨论】:

          【解决方案4】:

          旧的,但这可能是某人正在寻找的东西..

          5.times.with_index(100){|i, idx| p i, idx};nil
          #=>
              0
              100
              1
              101
              2
              102
              3
              103
              4
              104
          

          【讨论】:

            【解决方案5】:

            当然还有while-loop:

            i = 1
            while i<=10 do
              print "#{i} "
              i += 1
            end
            # Outputs: 1 2 3 4 5 6 7 8 9 10
            

            【讨论】:

              猜你喜欢
              • 2012-09-15
              • 2012-08-31
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-11-28
              • 1970-01-01
              相关资源
              最近更新 更多