layout | title | partof | by | about | language |
---|---|---|---|---|---|
cheatsheet | Scala Cheatsheet | cheatsheet | Dmytro Kazanzhy | Ця шпаргалка створена завдяки <a href="https://brenocon.com/">Brendan O'Connor</a>, та призначена для швидкого ознайомлення з синтаксичними конструкціями Scala. Ліцензовано Brendan O'Connor за ліцензією CC-BY-SA 3.0. | uk |
{{ page.about }}
змінні | ||
Вірно
| Змінна. | |
Невірно
| Константа (значення). | |
| Явне вказання типу. | |
функції | ||
Вірно
Невірно
| Визначення функції. Прихована помилка: без = це процедура, що повертає Unit та може ввести в оману. Не підтримується зі Scala 2.13. | |
Вірно
Невірно
| Визначення функції. Синтаксична помилка: для кожного аргументу має бути вказано тип. | |
| Псевдонім (синонім) типу. | |
| Виклик-за-значенням. Виклик-за-іменем (аргумент обчислюється кожен раз як до нього звертаються). | |
| Анонімна функція. | |
| Анонімна функція: підкреслення це позиційний аргумент, тобто місце, куди буде підставлено аргумент функції. | |
| Анонімна функція: щоб використати аргумент двічі, треба його назвати. Зліва від => задається ім'я змінної, якій буде присвоєно аргумент та яку можна використати справа. | |
| Анонімна функція: блоковий стиль (фігурні дужки означають блок) повертає останній вираз. | |
| Анонімна функція: конвеєрний стиль. | |
| Анонімна функція: для передачі кількох блоків потрібні зовнішні дужки. | |
| Каррування, явний синтакси. | |
| Каррування, явний синтаксис. | |
| Каррування, синтаксичний цукор. Але: | |
| Потрібне кінцеве підкреслення, щоб отримати частково застосовану функцію (лише для версії з синтаксичним цукром). | |
| Узагальнений тип (параметричний поліморфізм). | |
| Інфіксний цукор (метод з одним аргументом може бути викликано як оператор). | |
| 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 якщо порожнє. |