%w(kawasaki yokohama shibuya).each do |name|
puts "#{name}.rb"
end
kawasaki.rb yokohama.rb shibuya.rb
["kawasaki", "yokohama", "shibuya"]
def block_sample
puts 'stand up'
yield
puts 'sit down'
end
block_sample do
puts 'walk'
end
stand up walk sit down
block_sample
stand up
LocalJumpError: no block given (yield) (pry):6:in `block_sample' (pry):13:in `<main>' /Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:355:in `eval' /Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:355:in `evaluate_ruby' /Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:323:in `handle_line' /Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:243:in `block (2 levels) in eval' /Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `catch' /Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `block in eval' /Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `catch' /Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `eval' /Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/iruby-0.1.13/lib/iruby/backend.rb:28:in `eval' /Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/iruby-0.1.13/lib/iruby/kernel.rb:110:in `execute_request' /Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/iruby-0.1.13/lib/iruby/kernel.rb:62:in `run' /Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/iruby-0.1.13/lib/iruby/command.rb:30:in `run_kernel' /Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/iruby-0.1.13/lib/iruby/command.rb:16:in `run' /Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/iruby-0.1.13/bin/iruby:6:in `<top (required)>' /Users/mic/.rbenv/versions/2.1.0/bin/iruby:23:in `load' /Users/mic/.rbenv/versions/2.1.0/bin/iruby:23:in `<main>'
def block_sample
puts 'stand up'
yield if block_given?
puts 'sit down'
end
block_sample
stand up sit down
block_sample do
puts 'hoge'
end
stand up hoge sit down
next
は yield
に値を返すので42
がputs
される
def display_value
puts yield
end
display_value do
next 42
end
42
break
は yield
に入ってすぐ実行されるので、 puts
はされず、display_value
の返り値が42
になる
i = display_value do
break 42
end
42
puts "#{i}ですよ"
42ですよ
次回、P.98中段より