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。

程序的运行结果为:

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

2 Comments

  • 2013年07月29号 - 4:22 下午 | Permalink

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

  • 2014年01月3号 - 5:39 下午 | Permalink

    讲得很清楚。谢谢

  • Comments are closed.