我读过“快速编程语言”,下标让我感到困惑,下面有一个带下标的例子,但我也可以用函数实现它,那么下标与函数相比究竟是什么意思?
以下示例有相同的输出“6次3是18”。
struct TimesTable {
let multiplier: Int
subscript(index: Int) -> Int {
return multiplier * index
}
}
let threeTimesTable = TimesTable(multiplier: 3)
println("6 times 3 is \(threeTimesTable[6])")
struct TimesTable2 {
let multiplier: Int
func times (index: Int) -> Int {
return multiplier * index
}
}
let threeTimesTable2 = TimesTable2(multiplier: 3)
println("6 times 3 is \(threeTimesTable2.times(6))")
答案 0 :(得分:5)
下标是函数的子集。他们不能完成函数可以执行的所有操作(例如,他们不能使用inout
个参数),但是他们做得非常好,语法非常方便(正方形)括号[ ]
)。
它们最常用于通过索引从集合中检索项目。所以不必写,
let array = [7, 3, 6, 8]
let x = array.itemAtIndex(0) // x == 7
我们可以写,
let x = array[0]
或者代替,
let dictionary = ["one": 1, "two": 2]
let x = dictionary.objectForKey("one") // x == Optional(1)
我们可以写,
let x = dictionary["one"] // x == Optional(1)
语法简短直观。正如Okapi所说,它们可以充当getter和变量属性的setter,就像计算属性一样。
文档中的示例是对下标的一种非传统用法。我认为它应该说明你正在做的事情 - 可以使用下标来代替函数或计算属性,只要你认为[bracket]
语法方便和有用。它们的使用不仅限于访问集合中的项目。
你可以改进自己的语法糖。