ruby中的block和yield

rails的同学极力鼓吹rails的简洁高效。虽一早就认定rails不太符合我的习惯,还是经不住诱惑再多看了rails两眼。
rails中大量使用了ruby的block语法。由于此前没有系统的看过ruby语法,block还是给我带来了不小的困惑。网上不少介绍block的文章,都说的不是太清楚。在看过《Programming Ruby》后才真正的开始理解block的用法。
代码块(Blocks)是指一块代码,用大括号({})或者do…end来标明起始和结束,代码块只能跟在方法调用后边。
yield语句:在方法内部使用yield语句来占位,当方法执行到yield时,实际执行的是调用方法时跟在后边的的代码块。
|x|:变量用一对’|’包裹,在代码块中使用,用于接受yield传递的参数。yield后跟的参数会传递给代码块中用| |标志的变量。
下面通过例子来更直观的认识block。

def x
  p "=start"
  yield 'a'
  yield 'b'
  p "=end"
end
x do |a|
  p "hello", a
end

程序的运行结果为:

"=start"
"hello"
"a"
"hello"
"b"
"=end"

定义了函数x,其中两次使用yield调用block中的代码块。block代码块支持一个参数。

ruby中的block和yield》有2个想法

  1. Sunny

    不错 不错~ 让我理解了这个yield 的用法.  多谢~~!   marco..啊  很像

评论已关闭。