Ruby 茴香豆有幾種寫法之 Loop

jprovim · February 13, 2015 · Last by neo_blackcap replied at February 28, 2015 · 2323 hits

Loop

  1. loop

    number = 0
    loop do
      break if number > 15
      puts "The number is #{number}"
      number += 1
    end
    
  2. until

    until number > 30
      puts "The number is #{number}"
      number += 1
    end
    
  3. while

    while number < 40 do
      puts "The number is #{number}"
      number += 1
    end
    
  4. for

    for i in 1..8 do
       puts i
    end
    
  5. times

    16.times do |number|
      puts "The number is #{number}"
    end
    
  6. times oneliner

    5.times { |i| puts i }
    
  7. upto

    5.upto 10 do
      puts 'Hi'
    end
    
  8. downto

    15.downto(10) {|i| puts i }
    
  9. each

    list = [0, 1, 2, 3, 4]
    list.each do |number|
      puts "The number inside the loop is #{number}"
    end
    
  10. each without initializing list

    (0..15).each do |number|
      puts "The number inside the loop is #{number}"
    end
    
  11. for another form

    for number in 0..15
      puts "The number inside the loop is #{number}"
    end
    

牛人 現身,繼續增加方法!

说到本质也就个几种罢了,while 跟 until 的实现不清楚,但是所谓的 for,each,downto, upto,times 还有 do-end block 或者花括号 block 都是迭代器+block 的表现模式而已,写这么多真的有意思吗?又没有什么本质区别。

`seq 1 15`.split.map(&:to_i).each {|number| puts "The number inside the loop is #{number}" }

😄 作弊的方法算不

#1 楼 @neo_blackcap 在细节和用途上还是有区别的。适用在不同情景,要是完全一样,就不会去创造这些。

#4 楼 @realwol 其他的不好说,我个人 更倾向于是语法糖。至于 for 循环,底层实现就是一个迭代器,用迭代器比用 for 循环能得到更好的效率,更 ruby 化的代码风格。

You need to Sign in before reply, if you don't have an account, please Sign up first.