要设置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"
答案 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
}
}