我有下面的類定義調用底層對象。舉例來說,我希望能夠做到:轉發在斯卡拉
val a = new Foo({() => List(1, 2, 3).toIterator })
val b = new Foo({() => List(4, 5, 6).toIterator })
val c = a ++ b
而且具有c
等於:
new Foo({() => a.values ++ b.values })
我看了一下代理(IterableForwarder
,TraversableForwarder
,...),但沒有似乎很適合將方法轉發到Iterator
,我仍然希望將Foo
同時保留爲靜態和動態結果類型。
實現此行爲的最佳方式是什麼,而不定義每種轉發方法?
看看迭代器特徵的定義,只有hasNext和next方法都是抽象的,所以你可以很容易地提供給他們。更重要的一點是Iterator可以擴展TraversableOnce,因此可以通過它的值進行單次傳遞,這限制了代理或派生表單的使用。問問自己,使用迭代器是否會更好。 –
我需要'Foo'類,因爲我需要能夠通過它的值進行多次傳遞,而不僅僅是作爲'Iterator'。 –