![]() |
1
1
你可能已经在Ruby文档中阅读了
您将在中的许多方法的描述中看到相同的内容
枚举器链接的关键在于
另一种思考方式是
|
![]() |
2
1
当索引大于;2 ruby使用其余值创建一个新数组 |
![]() |
3
1
隔断
第一个数组将包含
第二个数组将包含所有其他元素:
|
![]() |
4
0
您正在合并可枚举模块和枚举器类。模块Enumerable中的所有方法都是实例方法,要求其接收器是枚举器(类枚举器的实例)。 在自定义类中使用“include Enumerable”,并实现返回枚举数的each方法:
当Enumerable中包含的方法在包含Enumerable的类的实例上执行时,Ruby会在实例和Enumerable方法之间隐式插入每个方法。 with_索引不是可枚举模块的方法。它是枚举器类的实例方法。现在记得我说过,当您在自定义类中包括可枚举模块并实现each方法时,每个方法都可以用于返回枚举器实例。因此,具有每个返回枚举器的方法的类可以通过(显式)在类的实例和with_index之间插入每个方法来使用方法枚举器with#index。或者,它可以在可枚举模块方法上调用with_index,因为这会返回枚举器实例:
在上例中,分区是可枚举模块的实例方法,with_index是枚举器类的实例方法。分区返回一个枚举器实例,该实例可以采用with_索引。 现在,为了理解该语句的作用,您可以简单地查看可枚举文档,其中解释了分区的作用: 返回两个数组,第一个包含块计算为true的枚举元素,第二个包含其余元素。 所以在你的例子中,它决定了指数是否大于2。如果是,则将其放入一个数组,否则放入另一个数组。 |