2017-12-23 1 views
0

Meine Eingabe ist wie folgt:Gibt es einen kurzen Weg, um den Typ von `Int` nach` Double` zu ​​konvertieren, nachdem `` SplitAt`` auf eine `List` angewendet wurde?

1 1 1 1 1 44 33 

und das Ergebnis Ich mag würde so erhalten, ist:

val listA = List(1, 1, 1, 1, 1) 
val listB = List(44.0, 33.0) 

Ich weiß, dass ich eine Liste splitAt mit aufspalten, aber ich brauche die Werte von ListB um die Art von Double zu sein, weil ich sie in / Operator verwenden werde.

so weit mein Code ist so, und es ist hässlich.

val (listA, listB) = li.splitAt(5) 
val result = listA.sum * (listB(0).toDouble/(listB(0).toDouble + listB(1).toDouble)) 

Gibt es eine bessere Möglichkeit, meinen Wunsch zu archivieren?

Antwort

1

Sie können maplistB enthalten Double s:

val listBDouble = listB.map(_.toDouble) 

Danach Sie dies in Ihrem Ausdruck verwenden können:

val result = listA.sum * (listBDouble(0)/(listBDouble(0) + listBDouble(1))) 

BTW, wenn Sie Double s nur wegen der Aufteilung müssen mit wahrscheinlich ist dies bevorzugt:

val result = listA.sum * ((listB(0): Double)/(listB(0) + listB(1))) 

Auf diese Weise schreiben Sie (: Double) den Nominator als Double und der Rest wird wie erwartet funktionieren.

+0

Ich war auf der Suche nach dem Weg, eine zusätzliche Linie zu verwenden, und Ihre BTW Antwort war, was ich suchte. Vielen Dank! – hirofujitaaki

Verwandte Themen