上一章Swift教程请查看:swift类和结构体的方法解析
在类、结构和枚举中访问集合、序列和列表的元素成员需要借助下标。这些下标用于在索引的帮助下存储和检索值。数组元素在someArray[index]的帮助下被访问,它在字典实例中的后续成员元素可以作为somedicitential [key]被访问。
对于单个类型,下标可以从单个到多个声明。我们可以使用适当的下标来重载传递给下标的索引值的类型。根据用户对输入数据类型声明的需求,下标的范围也从单维到多维。
下标声明语法及其用法
让我们回顾一下计算属性。下标也遵循与计算属性相同的语法,对于查询类型实例,下标被写在一个方括号内,后面跟着实例名。下标语法遵循与“实例方法”和“计算属性”语法相同的语法结构,’subscript’关键字用于定义下标和用户可以指定一个或多个参数与他们的返回类型。下标可以具有可读写或只读属性,实例在“getter”和“setter”属性的帮助下存储和检索,就像计算属性一样。
语法
subscript(index: Int) −> Int {
get {
// 用于下标值声明
}
set(newValue) {
// 定义写在这里
}
}
例子1:
struct subexample {
let decrementer: Int
subscript(index: Int) -> Int {
return decrementer / index
}
}
let division = subexample(decrementer: 100)
print("这个数能被 \(division[9]) 整除")
print("这个数能被 \(division[2]) 整除")
print("这个数能被 \(division[3]) 整除")
print("这个数能被 \(division[5]) 整除")
print("这个数能被 \(division[7]) 整除")
例子2:
class daysofaweek {
private var days = ["Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "saturday"]
subscript(index: Int) -> String {
get {
return days[index]
}
set(newValue) {
self.days[index] = newValue
}
}
}
var p = daysofaweek()
print(p[0])
print(p[1])
print(p[2])
print(p[3])
下标的可选项
下标接受单个到多个输入参数,这些输入参数也属于任何数据类型。它们还可以使用变量和可变参数,下标不能提供默认的参数值或使用任何in-out参数。
定义多个下标被称为“下标重载”,其中一个类或结构可以根据需要提供多个下标定义,这些多个下标是根据在下标大括号中声明的值类型推断出来的。
struct Matrix {
let rows: Int, columns: Int
var print: [Double]
init(rows: Int, columns: Int) {
self.rows = rows
self.columns = columns
print = Array(count: rows * columns, repeatedValue: 0.0)
}
subscript(row: Int, column: Int) -> Double {
get {
return print[(row * columns) + column]
}
set {
print[(row * columns) + column] = newValue
}
}
}
var mat = Matrix(rows: 3, columns: 3)
mat[0,0] = 1.0
mat[0,1] = 2.0
mat[1,0] = 3.0
mat[1,1] = 5.0
print("\(mat[0,0])")
Swift下标支持单个参数到多个参数声明的适当数据类型,该程序将“矩阵”结构声明为一个2 * 2维数组矩阵来存储“双”数据类型,使用整数数据类型输入矩阵参数,用于声明行和列。
通过将行和列计数传递给initialize来创建矩阵的新实例,如下所示。
var mat = Matrix(rows: 3, columns: 3)
矩阵值可以通过向下标传递行值和列值来定义,下标之间用逗号分隔,如下所示。
mat[0,0] = 1.0
mat[0,1] = 2.0
mat[1,0] = 3.0
mat[1,1] = 5.0
评论前必须登录!
注册