swift – 使用依赖于其他实例变量的值初始化惰性实例变量

swift – 使用依赖于其他实例变量的值初始化惰性实例变量,第1张

概述以下初始化当前在调用getEventCalendar的行中生成此错误: Cannot use instance member ‘getEventCalendar’ within property initializer; property initializers run before ‘self’ is available. 是否有任何合适的方法来初始化惰性实例变量的值取决于self的其他对象类 以下初始化当前在调用getEventCalendar的行中生成此错误:

Cannot use instance member ‘getEventCalendar’ within property
initializer; property initializers run before ‘self’ is available.

是否有任何合适的方法来初始化惰性实例变量的值取决于self的其他对象类型实例变量(不仅仅是自我alone)?我已经例如尝试将getEventCalendar从方法转换为函数,但这也无济于事.

class AbstractEventCalendarClIEnt {  let eventStore: EKEventStore  let entityType: EKEntityType  lazy var eventCalendar = getEventCalendar()  init(eventStore: EKEventStore,entityType: EKEntityType) {    self.eventStore = eventStore    self.entityType = entityType  }  func getEventCalendar() -> EKCalendar? {    // ...  }}
你可以使用一次只执行的闭包来捕获self的属性并在执行时使用它们(=首先使用lazy属性).例如.
class Foo {    var foo: Int    var bar: Int    lazy var lazyFoobarSum: Int = { return self.foo + self.bar }()    init(foo: Int,bar: Int) {         self.foo = foo         self.bar = bar    }}let foo = Foo(foo: 2,bar: 3)foo.foo = 7print(foo.lazyFoobarSum) // 10

W.r.t.对于你自己的尝试:你可以以同样的方式在这个曾经执行过的闭包中使用self的帮助(实例)函数.

class Foo {    var foo: Int    var bar: Int    lazy var lazyFoobarSum: Int = { return self.getFoobarSum() }()    init(foo: Int,bar: Int) {         self.foo = foo         self.bar = bar    }    func getFoobarSum() -> Int { return foo + bar }}let foo = Foo(foo: 2,bar: 3)foo.foo = 7print(foo.lazyFoobarSum) // 10
总结

以上是内存溢出为你收集整理的swift – 使用依赖于其他实例变量的值初始化惰性实例变量全部内容,希望文章能够帮你解决swift – 使用依赖于其他实例变量的值初始化惰性实例变量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1050258.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存