使用构造函数和使用.init之间有区别吗?

时间:2018-03-10 01:24:10

标签: swift

我们说我有一个班级:

class Fruit {
    var fruitName: String

    init(getFruit name: String) {
        fruitName = name
    }

}

使用构造函数和使用.init之间有什么区别吗?

var apple = Fruit(getFruit: "apple")
var orange = Fruit.init(getFruit: "orange")

我没看到操场上的任何差异。 enter image description here

如果问题措辞严厉或以前被问过,我道歉。

2 个答案:

答案 0 :(得分:5)

来自Initializer Expression section of the language guide

  

如果按名称指定类型,则可以在不使用初始化表达式的情况下访问类型的初始值设定项。在所有其他情况下,您必须使用初始化表达式。

     

让s1 = SomeType.init(数据:3)//有效
  令s2 = SomeType(数据:1)//也有效

     

让s3 = type(of:someValue).init(data:7)//有效
  let s4 = type(of:someValue)(data:5)//错误

直接使用类型上的显式.init初始化与没有它的情况没有什么不同;它们与Swift的观点相同,因此大多数人更喜欢省略.init的简洁。

答案 1 :(得分:1)

据我所知,绝对没有区别。

通常在Swift中调用构造函数而不使用.init这是“快速的”##简写。