如何获得未定义的输入和输出?

时间:2016-05-14 15:24:38

标签: scala

代码

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)] = {

1 个答案:

答案 0 :(得分:3)

您不需要指定任何类型范围来接受所有类型:

def partval[T](partID: Int, iter: Iterator[T]): Iterator[(Int, T)] = {
  iter.map(x => (partID, x))
}