标题的意思是“押韵方法”(摘自《Ruby Programming Language》)。这个押韵(rhyming)的单词我还真不知道,看到这里就楞住了,还纳闷这是什么方法呢。往下一看就明白了,原来说的就是4个押韵的方法:collect、select、reject和inject。
这4个方法都是“可枚举对象”(Enumerable Objects)的方法,并且它们都用到了迭代器(iterator)。
(注:可枚举对象包括数组、区间、哈希等定义了each方法的对象)
collect:这个方法运行关联的block时,把可枚举对象中的每一个成员做为参数传给block,并且将block处理后的值放到一个数组中返回。
select:类似collect,也是将可枚举对象中的每一个成员做为参数传递给相关联的block,但是它只将经过block处理后,不为nil或者false的值放到一个数组中返回。
reject:这个方法与select恰恰相反,它是只将经过block处理后,为nil或者false的值放到一个数组中返回。
inject:这个方法略微复杂点,值得记住的是它传递给相关联block的参数。参数有两个,第二个参数的取值,就是可枚举对象中的下一个成员(为参加运算的第一个成员);而第一个参数的取值总体来说是上一个迭代的运算结果,而这个参数的初始值的取值分为两种情况:1、如果inject方法有参数(inject(Arguments)),那么这个参数做为调用block时传给block的第一个参数;2、如果inject方法没有参数,那么取可枚举对象的第一个成员做为调用block时传递的第一个参数。