If you’re new to Scala, the idea of immutable data structures can be a pain at times, especially when you need to replace “for (int x=0; x < arr1.length; x++)". One easy way to handle this is zipWithIndex:
val arr1 = List(“a”, “b”, “c”)
arr1.zipWithIndex
Note that you call this WITHOUT the parens:
res14: List[(String, Int)] = List((a,0), (b,1), (c,2))
Otherwise, you’ll get an awful type error, which indicates you probably weren’t doing what you wanted:
:9: error: not enough arguments for method zipWithIndex: (implicit bf: scala.collection.generic.CanBuildFrom [List[String],(A1, Int),That])That. Unspecified value parameter bf.
Using the above technique, you get a new list, with tuples of object + index. If you need something that doesn’t pre-compute everything, like your old “for” loop, you can do something like this:
arr1
.view
.zipWithIndex
.flatMap(
x => {
System.out.println(x);
None
}).toList
(a,0) (b,1) (c,2) res49: List[Nothing] = List()