swift - 使用构造函数和使用 .init 有区别吗?

标签 swift

假设我有一个类:

class Fruit {
    var fruitName: String

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

}

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

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

我看不出 playground 有什么不同。 enter image description here

如果问题措辞不当或之前有人问过,我深表歉意。

最佳答案

来自Initializer Expression section of the language guide :

If you specify a type by name, you can access the type’s initializer without using an initializer expression. In all other cases, you must use an initializer expression.

let s1 = SomeType.init(data: 3) // Valid
let s2 = SomeType(data: 1) // Also valid

let s3 = type(of: someValue).init(data: 7) // Valid
let s4 = type(of: someValue)(data: 5) // Error

直接在类型上使用显式 .init 进行初始化与不使用它没有什么不同;从 Swift 的角度来看,它们是等价的,因此大多数人更喜欢省略 .init 的简洁性。

关于swift - 使用构造函数和使用 .init 有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49204423/

相关文章:

ios - swift 错误 : Could not determine generated file paths for Core Data code generation:

swift - 在 NSTextView clicked() 事件上获取字符串形式的链接

ios - iOS 上的 NSAttributedString 阴影和描边?

string - Swift 快速低级 String lastIndexOf

ios - CNPropertyNotFetchedException 应用崩溃

Swift 如何跳转到下一个 uitextfield

swift - 覆盖变量中的值

swift - 如何将单一类型的不同功能暴露给不同的模块?

swift - 设置委托(delegate)会使应用程序崩溃

swift - 如何在 didFailNavigation 方法中呈现另一个 View Controller