惰性变量给出 'Instance member can not be used on type' 错误
Lazy var giving 'Instance member can not be used on type' error
我现在多次遇到此错误,并且采用了不同的解决方法,但我真的很好奇为什么会发生这种情况。基本情况如下:
class SomeClass {
var coreDataStuff = CoreDataStuff!
lazy var somethingElse = SomethingElse(coreDataStuff: coreDataStuff)
}
所以我知道在 class 完全初始化之前我不能使用 self,但在这种情况下我使用 self 属性 coreDataStuff
来初始化一个惰性变量,它不会直到我的实例准备就绪。
任何人都可以解释我为什么会这样
Instance member can not be used on type
错误?
试试看:
class SomeClass {
var coreDataStuff = CoreDataStuff!
lazy var somethingElse: SomethingElse = SomethingElse(coreDataStuff: self.coreDataStuff)
}
确定惰性变量的类型并将 self.
添加到您传递的参数中很重要
Swift 中的惰性变量很容易忽略两个要求,不幸的是,警告是含糊不清的,没有解释如何修复它。
惰性变量要求
使用self.
: 引用实例成员时,必须使用self.
。 (例如 self.radius
。)
如果您忘记使用 self.
,您将收到此错误:
Instance member 'myVariable' cannot be used on type 'MyType'
指定类型:类型无法推断,必须显式写入。 (例如 : Float
。)
如果您忘记指定类型,您将收到此错误:
Use of unresolved identifier 'self'
例子
struct Circle {
let radius: Float
lazy var diameter: Float = self.radius * 2 // Good
//lazy var diameter = radius * 2 // Bad (Compile error)
}
我现在多次遇到此错误,并且采用了不同的解决方法,但我真的很好奇为什么会发生这种情况。基本情况如下:
class SomeClass {
var coreDataStuff = CoreDataStuff!
lazy var somethingElse = SomethingElse(coreDataStuff: coreDataStuff)
}
所以我知道在 class 完全初始化之前我不能使用 self,但在这种情况下我使用 self 属性 coreDataStuff
来初始化一个惰性变量,它不会直到我的实例准备就绪。
任何人都可以解释我为什么会这样
Instance member can not be used on type
错误?
试试看:
class SomeClass {
var coreDataStuff = CoreDataStuff!
lazy var somethingElse: SomethingElse = SomethingElse(coreDataStuff: self.coreDataStuff)
}
确定惰性变量的类型并将 self.
添加到您传递的参数中很重要
Swift 中的惰性变量很容易忽略两个要求,不幸的是,警告是含糊不清的,没有解释如何修复它。
惰性变量要求
使用
self.
: 引用实例成员时,必须使用self.
。 (例如self.radius
。)如果您忘记使用
self.
,您将收到此错误:Instance member 'myVariable' cannot be used on type 'MyType'
指定类型:类型无法推断,必须显式写入。 (例如
: Float
。)如果您忘记指定类型,您将收到此错误:
Use of unresolved identifier 'self'
例子
struct Circle {
let radius: Float
lazy var diameter: Float = self.radius * 2 // Good
//lazy var diameter = radius * 2 // Bad (Compile error)
}