Scala Cheatsheet
Scala Cheatsheet
Language
Contributed by Dmytro Kazanzhy
Ця шпаргалка створена завдяки Brendan O’Connor, та призначена для швидкого ознайомлення з синтаксичними конструкціями Scala. Ліцензовано Brendan O’Connor за ліцензією CC-BY-SA 3.0.
змінні | ||
Вірно
|
Змінна. | |
Невірно
|
Константа (значення). | |
|
Явне вказання типу. | |
функції | ||
Вірно
Невірно
|
Визначення функції. Прихована помилка: без = це процедура, що повертає Unit та може ввести в оману. Не підтримується зі Scala 2.13. |
|
Вірно
Невірно
|
Визначення функції. Синтаксична помилка: для кожного аргументу має бути вказано тип. |
|
|
Псевдонім (синонім) типу. | |
vs.
|
Виклик-за-значенням. Виклик-за-іменем (аргумент обчислюється кожен раз як до нього звертаються). |
|
|
Анонімна функція. | |
vs.
|
Анонімна функція: підкреслення це позиційний аргумент, тобто місце, куди буде підставлено аргумент функції. | |
|
Анонімна функція: щоб використати аргумент двічі, треба його назвати. Зліва від => задається ім'я змінної, якій буде присвоєно аргумент та яку можна використати справа. |
|
|
Анонімна функція: блоковий стиль (фігурні дужки означають блок) повертає останній вираз. | |
|
Анонімна функція: конвеєрний стиль. | |
|
Анонімна функція: для передачі кількох блоків потрібні зовнішні дужки. | |
|
Каррування, явний синтакси. | |
|
Каррування, явний синтаксис. | |
|
Каррування, синтаксичний цукор. Але: | |
|
Потрібне кінцеве підкреслення, щоб отримати частково застосовану функцію (лише для версії з синтаксичним цукром). | |
|
Узагальнений тип (параметричний поліморфізм). | |
|
Інфіксний цукор (метод з одним аргументом може бути викликано як оператор). | |
|
Varargs (аргументи змінної довжини). | |
пакети | ||
|
Імпорт всього вмісту пакету. | |
|
Вибірковий імпорт. | |
|
Імпорт з перейменуванням. | |
|
Імпорт всього з java.util окрім Date . |
|
На початку файлу:
Пакет в певних межах:
Пакет одиночка (singleton):
|
Оголошення пакету. | |
структури даних | ||
|
Кортеж (Tuple). Трансформується у виклик Tuple3 . |
|
|
Деструктивна прив'язка: кортеж розпаковується через зіставлення зі зразком (pattern matching). | |
Невірно
|
Прихована помилка: кожна змінна прив'язана до всього кортежу. | |
|
Список (імутабельний, тобто такий, що не змінюється). | |
|
Індексація через дужки (slides). | |
|
Додавання елементу до голови списку. | |
так само, як і
|
Синтаксичний цукор для діапазонів. | |
|
Пусті дужки це єдине значення для типу Unit. Еквівалентно до void у C та Java. |
|
управляючі конструкти | ||
|
Умовний конструкт. | |
так само, як і
|
Умовний конструкт (синтаксичний цукор). | |
|
Цикл while. | |
|
Цикл do-while. | |
|
Break (slides). | |
так само, як і
|
Цикл for: filter/map. | |
так само, як і
|
Цикл for: деструктивна прив'язка. | |
так само, як і
|
Цикл for: декартів добуток. | |
|
Цикл for: імперативізм. стиль sprintf . |
|
|
Цикл for: ітерація з включенням верхньої межі. | |
|
Цикл for: ітерація без включення верхньої межі. | |
зіставлення із зразком (pattern matching) | ||
Вірно
Невірно
|
Для зіставлення зі зразком необхідно використати case перед аргументами анонімної функції. |
|
Невірно
|
v42 буде інтерпретовано як ім'я змінної у зразку, яка буде вірно зіставлена з будь-яким Int значенням, і буде виведено “42”. |
|
Вірно
|
`v42` у зворотних галочках буде інтерпретовано як значення наявної змінної v42 , і буде виведено “Not 42”. |
|
Вірно
|
UppercaseVal буде інтерпретовано так само як наявна змінна, а не нова змінна в патерні. Тому значення, що міститься в UppercaseVal буде порівняно з 24 , і буде виведено “Not 42”. |
|
об'єктна орієнтація | ||
|
Параметри конструктора - тільки x доступний в тілі класу. |
|
|
Параметри конструктора - автоматичне створення публічного об'єкта. | |
|
Тіло класу є конструктором. Оголосити відкритий (public) атрибут. Оголосити атрибут, доступний тільки на читання. Оголосити закритий (private) атрибут. Альтернативний конструктор. |
|
|
Анонімний клас. | |
|
Визначити абстрактний клас (без можливості створення об'єкту). | |
|
Визначити клас, що наслідує інший. | |
|
Наслідування та параметри конструктора (за замовчуванням відбувається передача аргументів). | |
|
Визначити єдиний екземпляр (singleton). | |
|
Риси - трейти (traits). Інтерфейси-з-імплементацією. У трейту немає параметрів конструктора. композиція з домішками (mixin). |
|
|
Множинні трейти. | |
|
При реалізації вже наявного методу необхідно вказати overrides . |
|
|
Створення об'єкту. | |
Невірно
Вірно
|
Помилка типу: абстрактний тип. Натомість, існує конвенція у таких випадках використовувати фабричний метод обʼєкту компаньйону, що приховує конкретний тип. |
|
|
Літерал класу (Class[String] = class java.lang.String ). |
|
|
Перевірка типу під час виконання (runtime). | |
|
Приведення типу під час виконання (runtime). | |
|
Приписування типу під час компіляції (compile time). | |
опції (options) | ||
|
Конструктор для непустого опціонального значення (тип Some[T] ). |
|
|
Одинак (Singleton) пустого опціонального значення (тип None ). |
|
проте
|
Null-safe фабрика опціональних значень. | |
так само, як і
|
Явна типізація опціонального значення. Фабричний метод для створення пустих опціональних значень. |
|
|
Конвеєрний стиль. | |
|
Синтаксис for-виразу. | |
так само, як і
|
Застосування функції до опціонального значення. | |
так само, як і
|
Так само, як і map б але функція має повернути опціональне значення. |
|
так само, як і
|
Вилучення вкладених опціональних значень. | |
так само, як і
|
Застосувати процедуру на опціональному значенні. | |
так само, як і
|
Застосувати функцію на опціональному значенні та повернути значення, якщо воно порожнє. | |
так само, як і
|
Виконати часткове зіставлення зі зразком опціонального значення. | |
так само, як і
|
true якщо не порожнє. |
|
так само, як і
|
true якщо порожнє. |
|
так само, як і
|
true якщо не порожнє. |
|
так само, як і
|
0 якщо порожнє, інакше 1 . |
|
так само, як і
|
Обчислити та повернути альтернативне опціональне значення, якщо порожнє. | |
так само, як і
|
Обчислити та повернути значення за замовчуванням, якщо порожнє. | |
так само, як і
|
Повернути значення, або згенерувати виключення, якщо порожнє. | |
так само, як і
|
Повернути значення, null якщо порожнє. |
|
так само, як і
|
Фільтрація опціонального значення. Повернути значення, якщо предикат істинний. | |
так само, як і
|
Фільтрація опціонального значення. Повернути значення, якщо предикат хибний. | |
так само, як і
|
Повернути значення предикату на опціональному значенні або false якщо порожнє. |
|
так само, як і
|
Повернути значення предикату на опціональному значенні або true якщо порожнє.. |
|
так само, як і
|
Перевіряє чи дорівнює опціональне значення параметру, false якщо порожнє. |