假设我有一个类:
class Fruit {
var fruitName: String
init(getFruit name: String) {
fruitName = name
}
}
使用构造函数和使用 .init 有什么区别吗?
var apple = Fruit(getFruit: "apple")
var orange = Fruit.init(getFruit: "orange")
如果问题措辞不当或之前有人问过,我深表歉意。
最佳答案
来自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 validlet 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/