为什么'init'不可分配?

Nic*_*tto 4 swift

我刚刚读到该init方法不能用作值.含义:

var x = SomeClass.someClassFunction // ok
var y = SomeClass.init              // error
Run Code Online (Sandbox Code Playgroud)

语言参考上找到的示例

为什么会那样?这是一种强制语言水平的方法,因为有些诡计或可能因为它干扰了另一个特征而过于肮脏的技巧

Sul*_*han 8

与Obj-C不同,它init可以多次调用函数而没有问题,在Swift中实际上没有调用方法init.

init只是一个关键字,意思是"以下是构造函数".MyClass()在创建新实例期间始终通过via调用构造函数.它永远不会作为一种方法单独调用myInstance.init().您无法获得对底层函数的引用,因为无法调用它.

这也与构造函数不能被继承的事实有关.码

var y = SomeClass.init
Run Code Online (Sandbox Code Playgroud)

也会破坏子类型,因为子类型不需要具有相同的初始化器.