Noob问题:
考虑以下C#代码:
public IEnumerable<xpto> CalculatedList {
get { foreach(var item in privateList.OfType<xpto>()) yield return item; }
}
Ruby中的对应代码是什么?问题是我希望类方法的返回对象的行为就像一个Enumerable,所以我可以在其上调用include?,sort_by等。
顺便说一下,我知道我可以让方法返回一个列表,但这不会是(a)懒惰,因为列表需要先计算,(b)寻找一个思想解决方案:-)
答案 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>()); } }