ruby中的block和yield
首先,ruby的方法可以接收参数,从某种角度说,参数类型至少分三种:普通参数,可变参数或者block。Ruby通过参数名的前缀来识别参数类型,"*" 对应的是可变参数,"&"对应的是block。这个前缀是告诉Ruby解释器,如何去理解参数的类型,否则Ruby自己是不明白你这里的参数到底想要闹哪样的。
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代码块支持一个参数。

浙公网安备 33010602011771号