【问题标题】:Syntactic sugar for init properties in Swift?Swift 中初始化属性的语法糖?
【发布时间】:2014-10-29 13:55:07
【问题描述】:
class Person {

   var name: String
   var age: Int

   func init(age: Int, name: String, /** ... **/) {
     self.age = age
     self.name = name
     // ... much typing, much boring.
   }
}

我可能有点懒惰,但明确键入每个属性感觉很像人类编译器在工作。是否有任何语法糖用于将构造函数参数分配给 Swift 中的实例?

【问题讨论】:

  • 注意:我刚刚开始使用 Swift

标签: swift


【解决方案1】:

查看 Swift 语言书籍的Default Initializers 部分。如果你要让Person 成为一个结构而不是一个类,它会自动获得一个memberwise 初始化器

struct Person {
    var name: String
    var age: Int
}

let p = Person(name: "Joe", age: 30)

为其所有存储属性定义默认值的类或结构获得一个默认初始化器

class Person {
    var name: String = ""
    var age: Int = 0
}

var p = Person()
p.name = "Joe"
p.age = 30

如果您在原始类型声明中声明任何自己的初始化程序,这些自动生成的初始化程序就会消失,但您可以在扩展中添加其他初始化程序。

【讨论】:

    猜你喜欢
    • 2017-11-05
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 2019-04-01
    • 2021-12-22
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多