Warum Klammern?
Hier ist das Zitat aus der Buchprogrammierung in Scala .
Eine weitere wichtige Idee, die in diesem Beispiel veranschaulicht wird, gibt Ihnen einen Einblick, warum in Scala auf Arrays mit Klammern zugegriffen wird. Scala hat weniger Sonderfälle als Java. Arrays sind einfach Instanzen von Klassen wie jede andere Klasse in Scala. Wenn Sie einer Variablen Klammern um einen oder mehrere Werte zuweisen, wandelt Scala den Code in einen Aufruf einer Methode mit dem Namen apply für diese Variable um. So wird greetStrings (i) in greetStrings.apply (i) umgewandelt. Der Zugriff auf ein Element eines Arrays in Scala ist daher einfach ein Methodenaufruf wie jeder andere. Dieses Prinzip ist nicht auf Arrays beschränkt: Jede Anwendung eines Objekts auf einige Argumente in Klammern wird in einen Apply-Methodenaufruf umgewandelt. Dies wird natürlich nur kompiliert, wenn dieser Objekttyp tatsächlich eine Apply-Methode definiert. Es ist also kein Sonderfall; Es ist eine allgemeine Regel.
Hier sind einige Beispiele, wie Sie ein bestimmtes Element (in diesem Fall das erste Element) mithilfe eines funktionalen Programmierstils abrufen können.
// 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)