KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
If you have a mutable data structure like an Array , is it possible to use map operations or something similar to change its values? Say I have val a = Array(5, 1, 3) , what the best way of say, subtracting 1 from each value? The best I've come up with is for(i <- 0 until a.size) { a(i) = a(i) - 1 } I suppose way would be make the array a var rather than a val so I can say a = a map (_-1) edit: fairly easy to roll my own if there's nothing built-in, although I don't know how to generalise to other mutable collections scala> implicit def ArrayToMutator[T](a: Array[T]) = new { | def mutate(f: T => T) = a.indices.foreach {i => a(i) = f(a(i))} | } ArrayToMutator: [T](a: Array[T])java.lang.Object{def mutate(f: (T) => T): Unit} scala> val a = Array(5, 1, 3) a: Array[Int] = Array(5, 1, 3) scala> a mutate (_-1) scala> a res16: Array[Int] = Array(4, 0, 2)
Tags (comma-separated)
Save Edits
Cancel