对 block的再理解

by 卡布卡布 at about 9 years ago, last updated at about 9 years ago
S

1.block的多行与一行书写 多行书写

[1,2,3].each do |n|
    puts "num : #{n}"   #>  num is 1     num is 2    num is 3
end

一行书写

[1,2,3].each {|n| puts "num : #{n}"}   #>  num is 1     num is 2    num is 3

2.yield语句 可以看做是一种占位符当方法执行yield时候,实际执行的是调用方法时跟在后面的代码块中的代码. 当调用my_num 方法时,执行到yield时,会执行block语句中的内容,当block语句中的内容执行完后,又回回到my_num中继续执行。

def my_num

    puts "num is 1"     #>  num is 1

    yield                      #>  num is 2

    puts "num is 3"      #>  num is 3
end

my_num  do 

    puts "num is 2"

end