如何设置结构的属性值?

时间:2016-10-11 01:39:02

标签: swift

要设置multiplier的值,我认为我使用的是threeTimesTable.multiplier = 3语法。以下是如何解决的?看起来我正在将一个参数传递给struct并初始化一个值,但我没有在课堂上看到初始化器。我对这里发生的事情感到非常困惑。 struct中的参数是可选的吗?

struct TimesTable {
    let multiplier: Int
    subscript(index: Int) -> Int {
        return multiplier * index
    }
}
let threeTimesTable = TimesTable(multiplier: 3)
print("six times three is \(threeTimesTable[6])")
// Prints "six times three is 18"

1 个答案:

答案 0 :(得分:1)

因为这是一个结构,Swift提供了一个默认的成员初始化程序(类没有这个功能)。来自Swift book

  

结构类型的成员初始值设定项

     

所有结构都有一个自动生成的成员初始化程序,您可以使用它初始化新结构实例的成员属性。可以通过名称

将新实例的属性的初始值传递给成员初始值设定项

在您的情况下,这转换为:

struct TimesTable {
    let multiplier: Int

    // This is automatically provided by the compiler
    init(multiplier: Int) {
        self.multiplier = multiplier
    }

    subscript(index: Int) -> Int {
        return multiplier * index
    }
}