Ответ 1
Помимо закрытий (в которых Java не отображается все, что близко к наличию), здесь приведен список функций в Scala, отсутствующих на Java. Я буду опускать библиотеки здесь и сосредоточиться на особенностях самого языка. Это не является исчерпывающим каким-либо образом, но я думаю, что он содержит большие элементы билетов.
- Неявные параметры/преобразования
- Соответствие шаблону, классы case
- Тип ввода (некоторые)
- Более высокие типы (конструкторы абстракции над типами)
- Монадические
for
понятия - Отмеченные аннотации
- Интерфейсы с поведением (чертами)
- По умолчанию и названные аргументы
- Унифицированные методы и операторы (методы могут использоваться как операторы infix, операторы могут быть перегружены, потому что это просто методы)
- Унифицированная иерархия типов; нет примитивных типов
- Свойства, а не геттеры и сеттеры.
- Абстрактные значения
- Первичные неизменные ссылки (
val
так же легко объявить какvar
s) - Понятия (ленивые) термины (возможно, закрытие Java сделает это достаточно легко выразить)
- Оптимизация рекурсии хвостового вызова
- Абстрактные типы
- Наложение типов
- Типы типов
- Типы, зависящие от пути
- Структурные типы
- Тип ascription, в отличие от литья типов
- Переименование импорта
- Первоклассные модули (объекты)
- Пакеты первого класса
- Reified generics (manifests)
- Ограниченные продолжения
Некоторые прохладные вторичные конструкции, которые позволяют использовать эти строительные блоки:
- Типовые классы (через неявные параметры и более высокие типы)
- " Pimp My Library" (через неявные преобразования)
- Внутренние DSL (через методы перегрузки и инфикс оператора)
- Комбинированные компоненты Parser (активируются функциями более высокого порядка и сделаны с помощью методов infix)
- Генераторы, сопрограммы, настраиваемые структуры управления (через ограниченные продолжения)
- Типовое программирование (через более высокие и абстрактные типы)
- Устаревание схем инъекций зависимостей (через шаблон торта)
Наконец, я упомянул, что Scala имеет REPL (read-evaluation-print-loop) - не является самой особенностью самого языка, но это очень приятно иметь!