2016-05-14 4 views
0

Der CodeWie undefinierte Ein- und Ausgänge?

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

nicht funktioniert. Der genaue Typ im Iterator sollte in diesem Code keine Rolle spielen und ich dachte, dass alles von Nothing sein sollte. Ich dachte, der Scala-Compiler könnte die Typen ableiten, so erwartete ich auch

def partval(partID: Int, iter: Iterator): Iterator = { 
      iter.map(x => (partID, x)).toList.iterator } 

oder

def partval(partID, iter) = { 
      iter.map(x => (partID, x)).toList.iterator } 

zu arbeiten, aber es funktioniert nicht. Wie bekomme ich das zum Laufen?


Edit:

die Signatur def partval(partID: Int, iter: Iterator[T]): Iterator[(Int, T)] Ergebnisse in

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

, wenn ich Sie bekam richtig, du willst 'def partval (partID: Int, iter: Iterator [T]): Iterator [(Int, T)]'. Warum brauchst du auch '.toList.iterator'? –

+0

@VitaliyKotlyarenko: Was meinst du mit deiner letzten Frage? Warum möchte ich einen Iterator? Das ist nur die erforderliche Ausgabe. Warum 'toList'? Ich bin mir nicht sicher, aber ohne es geht es nicht. – Make42

+0

@VitaliyKotlyarenko: Ihre Unterschrift führt zu einem Fehler (siehe Frage). – Make42

Antwort

3

Sie brauchen keine Art Grenzen angeben, um alle Typen:

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