class A {
private var value: Int
init(value: Int) {
self.value = value
}
}
Run Code Online (Sandbox Code Playgroud)
我们有A类,我用A.init(值:5)和A(值:5)创建这个对象有什么区别?谢谢
两者之间没有功能差异.两种样式都将调用相同的初始化程序并生成相同的值.
我见过的大多数样式指南都倾向于.init省略显式A(value:)- 支持更短的语法 - 这也类似于许多其他语言中的构造函数语法.
也就是说,在某些情况下,能够明确引用初始化程序是有用的.例如:
当可以推断出类型时,初始化的行为比正在初始化的类型更重要.能够打电话return .init(/* ... */)而不是return SomeComplicatedType(/* ... */)或let array: [SomeComplicatedType] = [.init(/* ... */), .init(/* ... */)]
将初始化程序传递给更高阶函数时,能够传递"something".map(String.init)而不是传递"something".map({ String($0) })
再次,这是一个风格问题.
| 归档时间: |
|
| 查看次数: |
1006 次 |
| 最近记录: |