Wednesday, October 22, 2008

(5)枚举对象

你可以在Ruby1.8中通过require 'enumerator' 来使用枚举对象,在Ruby1.9中这个对象是内建的,你不用单独导入一个库。枚举对象位于Enumeration::Enumerator,你可以通过new 关键字来创建一个枚举对象,但是通常我们是通过在其它对象上使用to_enum或者enum_for来创建枚举对象。有时候你要为一个方法传递一个数字参数,但是你又担心这个方法可能会改变你的数组,那么通过to_num方法可以创建这个数字的代理对象,你就不必有这样的担心了,因为这时这个对象是不可变的。比如:
process(data.to_enum)  # 而不是使用 process(data)
你还可以给enum_for方法传递参数,比如对象String对象你希望是使用其each_char来获得一个数组:
s = "hello"
s.enum_for(:each_char).map {|c| c.succ }  # => ["i", "f", "m", "m", "p"]

No comments: