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"

}

  

posted @ 2016-08-06 11:39  Silktree  阅读(145)  评论(0)    收藏  举报