Pourquoi des parenthèses?
Voici la citation de la programmation du livre en scala .
Une autre idée importante illustrée par cet exemple vous donnera un aperçu de la raison pour laquelle les tableaux sont accessibles avec des parenthèses dans Scala. Scala a moins de cas spéciaux que Java. Les tableaux sont simplement des instances de classes comme toute autre classe dans Scala. Lorsque vous appliquez des parenthèses entourant une ou plusieurs valeurs à une variable, Scala transforme le code en invocation d'une méthode nommée apply sur cette variable. Donc ,reetStrings (i) se transforme en greetStrings.apply (i). Ainsi, accéder à un élément d'un tableau dans Scala est simplement un appel de méthode comme les autres. Ce principe n'est pas limité aux tableaux: toute application d'un objet à certains arguments entre parenthèses sera transformée en appel de méthode apply. Bien sûr, cela ne se compilera que si ce type d'objet définit réellement une méthode apply. Ce n'est donc pas un cas spécial; c'est une règle générale.
Voici quelques exemples comment extraire certains éléments (premier élément dans ce cas) en utilisant un style de programmation fonctionnel.
// 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)