あなたが達成しようとしていることはわかりませんが、これは正しいアプローチではないようです。「リスト」に値が存在するかどうかを判断する必要がある場合は、おそらくSet
あなたのニーズに合うでしょう:
scala> val s = Set(4,8)
s: scala.collection.immutable.Set[Int] = Set(4, 8)
scala> s(4)
res0: Boolean = true
scala> s(5)
res1: Boolean = false
scala> s map (_ * 2)
res2: scala.collection.immutable.Set[Int] = Set(8, 16)
scala> s reduceLeft((a,b) => a+b)
res3: Int = 12
またはさらに簡単:
scala> s sum
res4: Int = 12
より洗練されたものが必要で、リスト内の要素のインデックスが重要な場合はMap
、キーがインデックスをシミュレートする場所を使用できます。欠損値はデフォルト値にマップできます。
scala> val m = Map(1 -> 4, 2 -> 8) withDefault(n => 0)
m: scala.collection.immutable.Map[Int,Int] = Map(1 -> 4, 2 -> 8)
scala> m(1)
res5: Int = 4
scala> m(3)
res6: Int = 0
scala> m map {case (k,v) => (k,2*v)}
res7: scala.collection.immutable.Map[Int,Int] = Map(1 -> 8, 2 -> 16)
scala> m.foldLeft(0){case (sum,(_,v)) => sum+v}
res8: Int = 12
繰り返しますが、あなたのニーズが何であるかはわかりませんが、間違った方向に進んでいるように感じます...
Option
使用する前によく考えるタイプです. 本当に必要かどうか自問してください。あなたがやろうとしていることをよりエレガントな方法で達成する解決策があるかもしれません。