Создание объекта — тяжелый процесс. Когда мы создаем объект класса, все общедоступные и частные свойства этого класса инициализируются внутри конструктора. Каждая переменная внутри инициализации класса требует определенного количества времени для выделения памяти в куче и удержания ее ссылки в стеке. Чем больше переменных, тем больше времени это может занять, но, поскольку время измеряется микросекундами или даже меньше, его нельзя наблюдать.
This post was originally posted at https://agrawalsuneet.github.io/blogs/computed-property-in-swift/ and reposted on Medium on 03rd Dec 2021.
Иногда нам не нужно, чтобы все объекты были инициализированы во время самого создания объекта класса.
На это может быть две причины.
- Этот объект/свойство/переменная зависит от другого объекта, который сначала инициализируется и использует его ссылку.
- Поток таков, что нам нужен этот объект только в определенном состоянии.
В Swift у нас есть определенные функции, которые могут помочь нам отложить инициализацию этого объекта в соответствии с требованиями.
Один из способов сделать это — использовать вычисляемые свойства.
Вычисляемые свойства — это свойства, которые не инициализируются во время создания объекта или вызова конструктора. Они вычисляются каждый раз при доступе к свойству.
Мы можем использовать его для любых сложных вычислений, которые мы хотим выполнять на условной основе. В отличие от ленивых свойств, эти свойства вычисляются каждый раз при доступе к свойству.
Базовая инициализация вычисляемого свойства в объекте класса User будет выглядеть следующим образом:
struct User { let name : String let age : Int } struct Department { var users : [User] init(users : [User]) { print("Department constructor is called") self.users = users } var youngestUser : User? { print("Department youngestUser is computed") return self.users.min(by: {$0.age < $1.age}) } }
Пожалуйста, продолжайте читать на https://agrawalsuneet.github.io/blogs/computed-property-in-swift/
Это все на данный момент. Вы можете прочитать другие мои интересные блоги здесь или насладиться моими играми или приложениями, перечисленными здесь. Не стесняйтесь использовать мои компоненты Android с открытым исходным кодом в своем приложении, указанном здесь. Или напишите электронное письмо, если вы не нашли то, что ищете, и вам нужна помощь.