我刚读到 init
方法不能用作值。含义:
var x = SomeClass.someClassFunction // ok
var y = SomeClass.init // error
在 Language reference 上找到的示例
为什么会这样?这是一种强制执行语言级别的方法吗?太肮脏的技巧因为某种连贯性或可能因为它干扰了另一个功能而出现?
最佳答案
与 Obj-C 不同,init
函数可以多次调用而不会出现问题,而在 Swift 中实际上没有名为 init
的方法。
init
只是一个关键字,意思是“下面是一个构造函数”。在创建新实例期间,始终通过 MyClass()
调用构造函数。它永远不会作为方法 myInstance.init()
单独调用。您无法获得对底层函数的引用,因为无法调用它。
这也与构造函数不能被继承的事实有关。代码
var y = SomeClass.init
也会破坏子类型化,因为子类型不需要具有相同的初始值设定项。
关于swift - 为什么 'init' 不可分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24023820/