Fuente
Затишна Галера | iOSКомпас 🧭1️⃣3️⃣6️⃣ Завдання 136Що повинні реалізовувати змінні, що м...
666 Vistas/Alcance
2026-01-07 09:41
Mensaje №2323
#iOSКомпас 🧭1️⃣3️⃣6️⃣ Завдання 136Що повинні реалізовувати змінні, що містяться в протоколі?З вами знову той самий автор каналу @badlinkschannel. Не забувайте підписатися. А ми продовжуємо наші яблучні історіі.У Swift змінні (властивості), оголошені в протоколі, повинні вказувати:🔣 Тільки для читання (get)Якщо властивість оголошена як { get }, клас або структура, що реалізує протокол, повинна надати щонайменше геттерprotocol Animal { var name: String { get } // Тільки читання}struct Dog: Animal { let name = "Барсик" // Реалізуємо тільки get}let dog = Dog()print(dog.name) // "Барсик"
🔣 Також можна використовувати обчислювану властивість:struct Cat: Animal { var name: String { return "Мурзик" }}
🔣 Для читання і запису (get set)Якщо властивість { get set }, клас або структура обов’язково повинні надати і get, і set.protocol Vehicle { var speed: Int { get set } // Читання і запис}class Car: Vehicle { var speed: Int = 100 // Реалізуємо і get, і set}let car = Car()car.speed = 120 // Можна змінити значенняprint(car.speed) // 120
🔣 Обчислювана властивість також підійде, якщо вона має get і set:class Bike: Vehicle { private var internalSpeed = 50 var speed: Int { get { return internalSpeed } set { internalSpeed = newValue } }}
🔣 Статичні властивості (static)Якщо властивість повинна бути спільною для всіх екземплярів (не індивідуальною), то вона оголошується static.protocol Config { static var appVersion: String { get }}struct AppSettings: Config { static let appVersion = "1.0.0"}print(AppSettings.appVersion) // "1.0.0"
🔣 Клас може використовувати class var, якщо властивість можна перевизначати в підкласах:class AppInfo: Config { class var appVersion: String { return "2.0.0" }}
@Zatishna_Galera