Почему круглые скобки?
Вот цитата из книги по программированию в Scala .
Другая важная идея, проиллюстрированная этим примером, даст вам понимание того, почему массивы доступны в скобках в Scala. В Scala меньше особых случаев, чем в Java. Массивы - это просто экземпляры классов, как и любой другой класс в Scala. Когда вы применяете круглые скобки, окружающие одно или несколько значений, к переменной, Scala преобразует код в вызов метода с именем apply для этой переменной. Таким образом, greetStrings (i) преобразуется в greetStrings.apply (i). Таким образом, доступ к элементу массива в Scala - это просто вызов метода, как и любой другой. Этот принцип не ограничивается массивами: любое применение объекта к некоторым аргументам в скобках будет преобразовано в вызов метода apply. Конечно, это скомпилируется, только если этот тип объекта действительно определяет метод apply. Так что это не особый случай; это общее правило.
Вот несколько примеров, как вытащить определенный элемент (в данном случае первый элемент), используя стиль функционального программирования.
// Create a multdimension Array
scala> val a = Array.ofDim[String](2, 3)
a: Array[Array[String]] = Array(Array(null, null, null), Array(null, null, null))
scala> a(0) = Array("1","2","3")
scala> a(1) = Array("4", "5", "6")
scala> a
Array[Array[String]] = Array(Array(1, 2, 3), Array(4, 5, 6))
// 1. paratheses
scala> a.map(_(0))
Array[String] = Array(1, 4)
// 2. apply
scala> a.map(_.apply(0))
Array[String] = Array(1, 4)
// 3. function literal
scala> a.map(a => a(0))
Array[String] = Array(1, 4)
// 4. lift
scala> a.map(_.lift(0))
Array[Option[String]] = Array(Some(1), Some(4))
// 5. head or last
scala> a.map(_.head)
Array[String] = Array(1, 4)