Чому дужки?
Ось цитата з книжкового програмування в масштабі .
Ще одна важлива ідея, проілюстрована на цьому прикладі, дасть вам зрозуміти, чому масиви мають скоби в скобках у Scala. У Scala менше спеціальних випадків, ніж у Java. Масиви - це просто екземпляри класів, як і будь-який інший клас у Scala. Якщо ви застосуєте дужки, що оточують одне або більше значень до змінної, Scala перетворить код у виклик методу з назвою застосовувати до цієї змінної. Отже, HelloStrings (i) перетворюється на greeStrings.apply (i). Таким чином, доступ до елемента масиву в Scala - це просто виклик методу, як і будь-який інший. Цей принцип не обмежується масивами: будь-яке застосування об'єкта до деяких аргументів у дужках буде перетворено на виклик методу застосувати. Звичайно, це складатиметься лише в тому випадку, якщо цей тип об'єкта фактично визначає метод застосування. Тож це не особливий випадок; це загальне правило.
Ось кілька прикладів, як витягнути певний елемент (перший елем у цьому випадку) за допомогою функціонального стилю програмування.
// 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)