代码之家  ›  专栏  ›  技术社区  ›  Alan

在Swift[duplicate]中使用init和()创建对象有什么区别

  •  7
  • Alan  · 技术社区  · 7 年前
    class A {
    
        private var value: Int
    
        init(value: Int) {
            self.value = value
        }
    }
    

    我们有A类,我使用 A、 初始(值:5) A(值:5) ? 谢谢

    1 回复  |  直到 7 年前
        1
  •  15
  •   Ole Begemann    7 年前


    我见过的大多数风格指南都倾向于省略明确的 .init -支持较短的部分 A(value:) 语法也类似于许多其他语言中的构造函数语法。

    也就是说,在某些情况下,能够显式引用初始值设定项是有用的。例如:

    • 当可以推断类型并且初始化行为比正在初始化的类型更重要时。能够打电话 return .init(/* ... */) 而不是 return SomeComplicatedType(/* ... */) let array: [SomeComplicatedType] = [.init(/* ... */), .init(/* ... */)]

    • 将初始值设定项传递给高阶函数时,能够传递 "something".map(String.init) 而不是 "something".map({ String($0) })

    再说一次,这是一个 风格 .