在Ruby上IEnumerable

时间:2009-08-17 17:35:55

标签: ruby

Noob问题:

考虑以下C#代码:

public IEnumerable<xpto> CalculatedList {
  get { foreach(var item in privateList.OfType<xpto>()) yield return item; }
}

Ruby中的对应代码是什么?问题是我希望类方法的返回对象的行为就像一个Enumerable,所以我可以在其上调用include?,sort_by等。

顺便说一下,我知道我可以让方法返回一个列表,但这不会是(a)懒惰,因为列表需要先计算,(b)寻找一个思想解决方案:-)

2 个答案:

答案 0 :(得分:2)

require 'enumerator'
def calculated_list
  return enum_for(:calculated_list) unless block_given?

  private_list.each do |item|
    yield item.to_xpto # Or whatever the equivalent for OfType<xpto> looks like
  end
end

答案 1 :(得分:0)

只是fyi,C#可以减少到这个,这仍然是懒惰的。

public IEnumerable<xpto> CalculatedList
{  get { return privateList.OfType<xpto>()); } }