1. 下标脚本的定义:
struct TimesTable {
let multiplier: Int
// 定义下标脚本
subscript(index: Int) -> Int {
return multiplier * index
}
}
let threeTimesTable = TimesTable(multiplier: 3)
print("6 times 3 is \(threeTimesTable[6])") // 输出 "6 times 3 is 18"
2. 下标脚本参数:
下标脚本可以接受多个参数,并且这些参数的类型可以是任意类型。
struct Matrix {
let rows: Int
let columns: Int
var grid: [Double]
// 通过两个参数定义二维矩阵下标脚本
subscript(row: Int, column: Int) -> Double {
get {
return grid[(row * columns) + column]
}
set {
grid[(row * columns) + column] = newValue
}
}
}
var matrix = Matrix(rows: 2, columns: 2, grid: [1.0, 2.0, 3.0, 4.0])
print(matrix[0, 1]) // 输出 "2.0"
matrix[1, 0] = 5.0
print(matrix.grid) // 输出 "[1.0, 2.0, 5.0, 4.0]"
3. 下标脚本类型:
下标脚本可以返回任意类型的值,也可以是只读的或读写的。
struct Square {
var side: Double
// 只读下标脚本
subscript() -> Double {
return side * side
}
// 读写下标脚本
subscript(scale: Double) -> Double {
get {
return side * side * scale
}
set {
side = sqrt(newValue) / scale
}
}
}
var square = Square(side: 4.0)
print("Area: \(square[])") // 输出 "Area: 16.0"
square[2.0] = 36.0
print("New Side Length: \(square.side)") // 输出 "New Side Length: 6.0"
4. 下标脚本用法:
下标脚本在 Swift 中广泛用于访问集合、容器或类似的数据结构的元素。例如,Array 和 Dictionary 类型都使用下标脚本。
var numbers = [1, 2, 3, 4, 5]
print(numbers[2]) // 输出 "3"
var dictionary = ["A": 1, "B": 2, "C": 3]
print(dictionary["B"]) // 输出 "Optional(2)"
这些是一些基本的下标脚本操作。下标脚本提供了一种简便而灵活的方式来访问和修改类型中的元素。
转载请注明出处:http://www.pingtaimeng.com/article/detail/6853/Swift