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

Содержимое удалено Содержимое добавлено
мНет описания правки
Строка 952:
Заметьте, что типовые параметры никогда не используются в образцах, писать <tt>caseTuple2[Int, Int](n, d)</tt> — нельзя.
 
Кортежи так удобны, что у Scala есть для них специальный синтаксис. Чтобы сформировать кортеж с ''n'' элементами ''x<sub>1</sub>, ..., x<sub>n</sub>'', можно написать ''(x<sub>1</sub>, ..., x<sub>n</sub>)''. Такая запись эквивалентна <tt>Tuple</tt>''n(x<sub>1</sub', ..., x<sub>n</sub>)''. Синтаксис (...) работает одинаково для кортежей и паттернов. С таким кортежным синтаксисом пример <tt>divmod</tt> можно записать так:
 
<font size=3><syntaxhighlight lang=Scala>
Строка 972:
</syntaxhighlight></font>
 
Помимо <tt>Function1</tt> есть также определения для функций любой другой арности (нынешняя реализация устанавливает некий разумный предел). То есть, для любого возможного числа параметров есть соответствующее определение. Синтаксис типа функции в Scala ''(T<sub>1</sub>, ..., T<sub>n</sub>) => S'' — это просто сокращение для параметризованого типа <tt>Function</tt>''n[T<sub>1</sub>, ..., T<sub>n</sub>, S]''.
 
Scala использует одинаковый синтаксис ''f(x)'' для применения функции, вне зависимости от того, является ли ''f'' методом или функциональным объектом. Это возможно из-за следующей конвенции: применение функции ''f(x)'', где ''f'' — объект (в противоположность методу) это укороченная запись для ''f''.<tt>apply</tt>''(x)''. Метод <tt>apply</tt>, принадлежащий типу функций, вставляется автоматически, где необходимо.
Строка 1243:
 
<font size=3><syntaxhighlight lang=Scala>
def sort[A](xs: List[A])(implicit c: A => Ordered[A]): List[A] = ...
</syntaxhighlight></font>