Neden parantez?
İşte scala'da kitap programlamadan alıntı .
Bu örnekle gösterilen bir başka önemli fikir, Scala'daki parantezlerle dizilere neden erişildiğine dair fikir verecektir. Scala'nın Java'dan daha az özel vakası var. Diziler Scala'daki diğer sınıflar gibi sınıfların örnekleridir. Bir veya daha fazla değeri çevreleyen parantezleri bir değişkene uyguladığınızda, Scala kodu bu değişken üzerinde uygula adlı bir yöntemin çağrılmasına dönüştürür. Böylece greetStrings (i) greetStrings.apply (i) biçimine dönüştürülür. Bu nedenle Scala'da bir dizinin bir elemanına erişmek, diğerleri gibi bir yöntem çağrısıdır. Bu ilke dizilerle sınırlı değildir: bir nesnenin parantez içindeki bazı bağımsız değişkenlere herhangi bir uygulaması bir uygulama yöntemi çağrısına dönüştürülecektir. Elbette bu sadece bu tür bir nesne gerçekten bir uygulama yöntemi tanımladığında derlenir. Bu özel bir durum değil; genel bir kuraldır.
Aşağıda, işlevsel programlama stilini kullanarak belirli öğelerin (bu durumda ilk elem) nasıl çekileceğine dair birkaç örnek verilmiştir.
// 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)