Dlaczego nawiasy?
Oto cytat z programowania książek w scali .
Inna ważna idea zilustrowana tym przykładem daje wgląd w to, dlaczego tablice są dostępne w nawiasach w Scali. Scala ma mniej specjalnych przypadków niż Java. Tablice są po prostu instancjami klas, jak każda inna klasa w Scali. Kiedy zastosujesz nawiasy otaczające jedną lub więcej wartości do zmiennej, Scala przekształci kod w wywołanie metody o nazwie zastosuj do tej zmiennej. Tak więc greetStrings (i) przekształca się w greetStrings.apply (i). W ten sposób dostęp do elementu tablicy w Scali jest po prostu wywołaniem metody, jak każde inne. Ta zasada nie ogranicza się do tablic: każde zastosowanie obiektu do niektórych argumentów w nawiasach zostanie przekształcone w wywołanie metody zastosuj. Oczywiście skompiluje się to tylko wtedy, gdy ten typ obiektu faktycznie zdefiniuje metodę zastosuj. To nie jest szczególny przypadek; to ogólna zasada.
Oto kilka przykładów, jak wyciągnąć określony element (w tym przypadku pierwszy element) za pomocą funkcjonalnego stylu programowania.
// 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)