Ruby区块
=begin
Ruby定义了方法后 我们可以吧一些语句嵌入 然后调用该方法 这就是类似的Ruby区块的概念
·块由大块的代码组成
·将名称分配给一个块
·块中的代码总是大括号包围({})
·一个程序的块段总是调用功能块使用相同名称 这意味着 如果有一个块的名称test 那么使用函数test来调用这个块
·使用yield语句调用块
语法:
block_name{
statement1
statement2
statement3
..........
}
=end
# yield语句 调用块时在执行到yield语句时 执行{}内的内容
=begin
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"}
test {}
=end
# yield语句后面可以跟着参数 甚至可以传递多个参数 在该块中放置在两条垂直线之间的变量接收的参数 因此 在上面的代码中 yield5语句可以将块作为一个参数值5
=begin
def test
yield 5#参数为5
puts "You are in the method test"
yield 100
end
test {|i| puts "You are int the block #{i}"}#传递参数 如果超过一个参数|a,b,c|
=end
#块和方法 以上即是块和方法关联 通过改写为以下方法 即可生成一个简单的块
=begin
def test
yield
end
test {puts "Hello world"}
=end
#以上例子是最简单的方式来实现一个快 调用块test使用yield语句 但是 如果最后一个参数的方法前面加上& 那么可以通过一个块这种方法 此块将被分配到最后一个参数
def test (&block)
block.call
end
test {
puts "Hello world!"
puts "werwerrew"
}

浙公网安备 33010602011771号