我有以下类定义:
class Foo[T](iteratorThunk: () => Iterator[T]) {
def values = iteratorThunk()
}
而且我想Foo
拥有所有Iterator
公开的方法,同时仍然返回 type 的对象Foo
。例如,我希望能够做到:
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
为静态和动态结果类型。
在不定义每种转发方法的情况下,实现此行为的最佳方法是什么?