def block_args_test yield() yield(1) yield(1, 2, 3) end puts "通过|a|接收块变量" block_args_test do |a| p [a] end puts "通过|a, b, c|接收块变量" block_args_test do |a, b, c| p [a, b, c] end puts "通过|*a|接收块变量" block_args_test do |*a| p [a] end
# ruby block_args_test.rb 通过|a|接收块变量 [nil] [1] [1] 通过|a, b, c|接收块变量 [nil, nil, nil] [1, nil, nil] [1, 2, 3] 通过|*a|接收块变量 [[]] [[1]] [[1, 2, 3]]
个人理解,将权力下放给调用者的时候,block可以获得更大的自由