Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni

🤖🚫 Контент вільний від AI. Цей пост на 100% написаний людиною, як і все на моєму блозі. Насолоджуйтесь!

10.03.2024

Доповнення до класів у Swift

Коли шукаєш розвʼязки всіляких дрібниць на Swift, можна швидко натрапити на конструкцію extension. Доповнення це завидна можливість мови, яка дозволяє прозоро та безпечно розширити функціональність класів, які вже існують, включаючи такі, що створені не нами. Точніше, саме для чужих класів доповнення й існують.

Ось, наприклад, доповнення, яке додає до символу функцію isEmoji. Так, далі можна писати "😀".isSingleEmoji", що дуже зручно.

Рубісти відразу впізнають такий спосіб розробки. В нас цілий Active Support так побудований — одна з фундаментальних частин сучасного Ruby.

Проте міксини в Ruby та доповнення у Swift мають одну принципову різницю. А саме, доповнення не впливають на внутрішню роботу класу. Ми не маємо доступу до приватних частин класу, та можемо тільки доповнювати його функціями, яких не було до того. Новий код буде обовʼязково навколо, а не всередині старого.

Технічно, замість доповнення можна було просто створити новий модуль (EmojiDetector.isEmoji(character:)). Тільки, по-перше, писати більше, а по-друге, завдяки доповненням можна ще й реалізувати інтерфейси, тобто підігнати готовий клас під нову потребу.