ruby 自带了一个内建的枚举器类(Enumerator class),它在ruby中实现外部迭代器 (external iterators)
你可以在 array 或者 hash 上调用to_enum来建立一个enumerator的对象
ex: a = [1,2,5] b={:a=>"sdf",:b=>"god"} a_en = a.to_enum a_en.next #=>1 a_en.next #=>2 b_en = b.to_enum b_en.next #=> [:a,"sdf"]
大部分的内部迭代器方法当他们调用的 时候不附带一个block,将会返回一个Enumerator
a= [1,2,4] a_en = a.to_enum a_en.next #=> 1
loop with enumerator
当loop和enumerator 一起使用的时候它是非常聪明的,当一个enumerator对象在loop中输出完了它的值之后,loop将会终止
a = [1,2,3].to_enum loop do puts "=======#{a.next}=======" end #puts =========1======= =========2======= =========3=======