Skip to content

Instantly share code, notes, and snippets.

@bachue
Created January 3, 2013 15:11
Show Gist options
  • Save bachue/4444172 to your computer and use it in GitHub Desktop.
Save bachue/4444172 to your computer and use it in GitHub Desktop.
`break` in block 原来`break`拥有跳出所有block的能力
def a(&block)
puts 'enter a'
b &block
puts 'exit a'
end
def b(&block)
puts 'enter b'
c &block
puts 'exit b'
end
def c(&block)
puts 'enter c'
d &block
puts 'exit c'
end
def d(&block)
puts 'enter d'
block[]
puts 'exit d'
end
a do
puts 'enter block'
break
puts 'exit block'
end
# output:
# enter a
# enter b
# enter c
# enter d
# enter block
@sp3c73r2038
Copy link

参考这里

http://stackoverflow.com/questions/4702211/are-return-and-break-useless-inside-a-ruby-block-when-used-as-a-callback

前面的都不用看

a do
  puts 'center block'
  break # 在这里跳出a的block
  puts 'exit block'
end

puts "hello" # break后其实已经把控制权移交到这里了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment