Scala в примерах: различия между версиями

54 байта добавлено ,  8 лет назад
м
Возврат прежних правок
м (Перемещение содержания влево, форматирование заголовков)
м (Возврат прежних правок)
Помимо <tt>Function1</tt> есть также определения для функций любой другой арности (нынешняя реализация устанавливает некий разумный предел). То есть, для любого возможного числа параметров есть соответствующее определение. Синтаксис типа функции в Scala <tt>(T<sub>1</sub>, …, T<sub>n</sub>) => S</tt> — это просто сокращение для параметризованого типа <tt>Function''n''[T<sub>1</sub>, …, T<sub>n</sub>, S]</tt>.
 
Scala использует одинаковый синтаксис ''f(x)'' для применения функции, вне зависимости от того, является ли ''f'' методом или функциональным объектом. Это возможно из-заблагодаря следующейследующему конвенциисоглашению: применение функции ''f(x)'', где ''f'' — объект (в противоположность методу) это укороченнаясокращенная записьформа записи для ''f''.<tt>apply</tt>(''x''). Метод <tt>apply</tt>, принадлежащий типу функций, вставляется автоматически везде, где это необходимо.
 
Поэтому мы определяли операцию взятия элемента из массива в [[Scala в примерах#Аннотации вариантности|Параграфе 8.2]] при помощи метода <tt>apply</tt>. Для любого масивамассива <tt>a</tt> операция взятия элемента <tt>a(i)</tt> это укороченнаясокращенная записьформа записи <tt>a.apply(i)</tt>.
 
Функции — это пример того, как полезны объявления контравариантных типовых параметров. Рассмотрим, например, следующий код:
83

правки