yield next break return

irb(main):056:0> def test(i)
irb(main):057:1> puts "Before"
irb(main):058:1> yield i
irb(main):059:1> puts "After"
irb(main):060:1> end



irb(main):067:0> test(1){|i| next true if i > 2;puts "code"}
Before
code
After
=> nil
irb(main):068:0> test(3){|i| next true if i > 2;puts "code"}
Before
After
=> nil
irb(main):069:0> test(3){|i| break true if i > 2;puts "code"}
Before
=> true
irb(main):070:0> test(1){|i| break true if i > 2;puts "code"}
Before
code
After
=> nil
irb(main):071:0> test(1){|i| return true if i > 2;puts "code"}
Before
code
After
=> nil
irb(main):072:0> test(3){|i| return true if i > 2;puts "code"}
Before
LocalJumpError: unexpected return
        from (irb):72
        from (irb):58:in `test'
        from (irb):72
        from :0

你可能感兴趣的:(Ruby)