为什么不在init块编译中初始化变量接口属性的代码?
interface A { var a: Int } class AJunior : A { override var a: Int init { a = 3 } }
它不会编译,因为
财产必须被初始化或是抽象的
但它已经初始化了。 我知道我可以写:
override var a: Int = 3
但是为什么第一个例子不能编译? 我的猜测是,这是一个错误或故意限制,以简化编译器的实现,但我不知道。
我报告这是一个错误 ,但事实证明,这是行为是由设计,因为:
您可以在init块中拥有可以观察处于未初始化状态的属性的代码