Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni
🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!10.03.2024
Доповнення до класів у Swift
Коли шукаєш розвʼязки всіляких дрібниць на Swift, можна швидко натрапити на конструкцію extension
. Доповнення це завидна можливість мови, яка дозволяє прозоро та безпечно розширити функціональність класів, які вже існують, включаючи такі, що створені не нами. Точніше, саме для чужих класів доповнення й існують.
Ось, наприклад, доповнення, яке додає до символу функцію isEmoji
. Так, далі можна писати "😀".isSingleEmoji"
, що дуже зручно.
Рубісти відразу впізнають такий спосіб розробки. В нас цілий Active Support так побудований — одна з фундаментальних частин сучасного Ruby.
Проте міксини в Ruby та доповнення у Swift мають одну принципову різницю. А саме, доповнення не впливають на внутрішню роботу класу. Ми не маємо доступу до приватних частин класу, та можемо тільки доповнювати його функціями, яких не було до того. Новий код буде обовʼязково навколо, а не всередині старого.
Технічно, замість доповнення можна було просто створити новий модуль (EmojiDetector.isEmoji(character:)
). Тільки, по-перше, писати більше, а по-друге, завдяки доповненням можна ще й реалізувати інтерфейси, тобто підігнати готовий клас під нову потребу.