Start a loop from 1

后端 未结 5 1524
南笙
南笙 2020-12-29 18:07

I recently came upon the scary idea that Integer.count loops in Ruby start from 0 and go to n-1 while playing with the Facebook Engine

相关标签:
5条回答
  • 2020-12-29 18:28

    You could use a range:

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

    Ranges give you full control over the starting and ending indexes (as long as you want to go from a lower value to a higher value).

    0 讨论(0)
  • 2020-12-29 18:28

    There is of course the while-loop:

    i = 1
    while i<=10 do
      print "#{i} "
      i += 1
    end
    # Outputs: 1 2 3 4 5 6 7 8 9 10
    
    0 讨论(0)
  • 2020-12-29 18:38

    Ruby supports a number of ways of counting and looping:

    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
    

    There's also step instead of upto which allows you to increment by a step value:

    >> 1.step(10,2) { |i| puts i } #=> 1
    1
    3
    5
    7
    9
    
    0 讨论(0)
  • 2020-12-29 18:38

    Try

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

    instead. It is also easier to read when the value of i matters.

    0 讨论(0)
  • 2020-12-29 18:40

    Old, but this might be something somebody's lookin for..

    5.times.with_index(100){|i, idx| p i, idx};nil
    #=>
        0
        100
        1
        101
        2
        102
        3
        103
        4
        104
    
    0 讨论(0)
提交回复
热议问题