代码
def partval(partID: Int, iter: Iterator[T >: Nothing]): Iterator[T >: Nothing] = {
iter.map( x => (partID, x) ).toList.iterator }
不起作用。迭代器中的确切类型在此代码中无关紧要,我认为所有内容都应该是Nothing
的超类型。我认为Scala编译器可以推断出类型,所以我甚至希望
def partval(partID: Int, iter: Iterator): Iterator = {
iter.map( x => (partID, x) ).toList.iterator }
或
def partval(partID, iter) = {
iter.map( x => (partID, x) ).toList.iterator }
工作,但事实并非如此。我如何让它运行?
编辑:
签名def partval(partID: Int, iter: Iterator[T]): Iterator[(Int, T)]
会产生
Name: Compile Error
Message: <console>:19: error: not found: type T
def partval2(partID: Int, iter: Iterator[T]): Iterator[(Int, T)] = {
^
<console>:19: error: not found: type T
def partval2(partID: Int, iter: Iterator[T]): Iterator[(Int, T)] = {
答案 0 :(得分:3)
您不需要指定任何类型范围来接受所有类型:
def partval[T](partID: Int, iter: Iterator[T]): Iterator[(Int, T)] = {
iter.map(x => (partID, x))
}