rails的同学极力鼓吹rails的简洁高效。虽一早就认定rails不太符合我的习惯,还是经不住诱惑再多看了rails两眼。
rails中大量使用了ruby的block语法。由于此前没有系统的看过ruby语法,block还是给我带来了不小的困惑。网上不少介绍block的文章,都说的不是太清楚。在看过《Programming Ruby》后才真正的开始理解block的用法。
代码块(Blocks)是指一块代码,用大括号({})或者do…end来标明起始和结束,代码块只能跟在方法调用后边。
yield语句:在方法内部使用yield语句来占位,当方法执行到yield时,实际执行的是调用方法时跟在后边的的代码块。
|x|:变量用一对’|’包裹,在代码块中使用,用于接受yield传递的参数。yield后跟的参数会传递给代码块中用| |标志的变量。
下面通过例子来更直观的认识block。
1 2 3 4 5 6 7 8 9 10 |
def x p "=start" yield 'a' yield 'b' p "=end" end x do |a| p "hello", a end |
程序的运行结果为:
1 2 3 4 5 6 |
"=start" "hello" "a" "hello" "b" "=end" |
定义了函数x,其中两次使用yield调用block中的代码块。block代码块支持一个参数。
不错 不错~ 让我理解了这个yield 的用法. 多谢~~! marco..啊 很像
讲得很清楚。谢谢