yield是与ruby中的block紧密结合的,block的语法就是{}(单行)或者do…end(多行) 一个block总是被一个具有相同名称的函数调用,这就是说如果你有个名为test的block,你就可以使用名为test的函数来调用这个block. yield语法的一个例子: def test puts "You are in the method" yield puts "You are again back to the method" yield end test {puts "You are in the block"} 打印结果: You are in the method You are in the block You are again back to the method You are in the block 这样当执行test方法时,yield会去查找并调用名称为test的block 当然yield后面也可以有参数 def test yield(2) end test {|i| puts "This index is #{i}"} 打印结果: This index is 2 也可以传多个参数如: yield(a,b) test{|a,b| puts "#{x}, #{y}"} 另一种写法: def test(&block) block.call end test { puts "Hello World!"} 调用block的两种方式: 1.单行block: test { .... } 2.多行block: test do .... end