现有方法
如果在没有块的情况下调用诸如 each
之类的迭代方法,则应返回 Enumerator
。
这可以使用 enum_for
方法完成:
def each
return enum_for :each unless block_given?
yield :x
yield :y
yield :z
end
这使程序员能够组成 Enumerable
操作:
each.drop(2).map(&:upcase).first
# => :Z
如果在没有块的情况下调用诸如 each
之类的迭代方法,则应返回 Enumerator
。
这可以使用 enum_for
方法完成:
def each
return enum_for :each unless block_given?
yield :x
yield :y
yield :z
end
这使程序员能够组成 Enumerable
操作:
each.drop(2).map(&:upcase).first
# => :Z