2017-12-23 10 views
0

私の入力は、このようなものです:`split`を` List`に適用した後、 `Int`から` Double`に型を変換する簡潔な方法はありますか?

1 1 1 1 1 44 33 

と私は取得したいと思い結果はこのようなものです:

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

私はsplitAtを使用してリストを分割することができます知っているが、私はListBの値を必要とします私が/オペレータでそれらを使用しようとしているので、Doubleのタイプになります。

これまでのところ、私のコードはこれと似ていて、醜いです。

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

私の希望をアーカイブするには、より良い方法がありますか?あなただけのために部門のDouble sの必要がある場合は、

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

ところで:あなたはあなたの表現でこれを使用することができます。この後

val listBDouble = listB.map(_.toDouble) 

答えて

1

あなたはmaplistBDouble Sを含むようにすることができますおそらくこれが好ましい:

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

この方法では、(: Double)ノミネーターはとみなされ、残りは期待通りに機能します。

+0

私は余分な行を使わない方法を探していました。あなたのBTWの答えは、私が探していたものでした。ありがとう! – hirofujitaaki

関連する問題