swift详解之八---------------下标脚本
swift详解之八—————下标脚本 下标脚本 可以定义在类(Class)、结构体(structure)和枚举(enumeration)这些目标中,可以认为是访问对象、集合或序列的快捷方式,不需要再调用实例的特定的赋值和访问方法 //语法
subscript(index : Int) ->Int
{
get{
}
set(newValue){
}
}
下面看一个例子 : struct Tables {
var mul = 2;
//只读的下标脚本
subscript(index :Int)->Int{
return 2*index
}
}
let tb = Tables()
print(tb[2]) //4
下标脚本 可以传入多个参数 或者可变类型 ,但是inout和默认参数不行 。 struct Matrix {
let rows: Int,columns: Int
var grid: [Double]
init(rows: Int,columns: Int) {
self.rows = rows
self.columns = columns
grid = Array(count: rows * columns,repeatedValue: 0.0)
}
func indexIsValidForRow(row: Int,column: Int) -> Bool {
return row >= 0 && row < rows && column >= 0 && column < columns
}
subscript(row: Int,column: Int) -> Double {
get {
assert(indexIsValidForRow(row,column: column),"Index out of range")
return grid[(row * columns) + column]
}
set {
assert(indexIsValidForRow(row,"Index out of range")
grid[(row * columns) + columns] = newValue
}
}
}
Matrix提供了一个两个入参的构造方法,入参分别是rows和columns,创建了一个足够容纳rows * columns个数的Double类型数组。为了存储,将数组的大小和数组每个元素初始值0.0,都传入数组的构造方法中来创建一个正确大小的新数组 你可以通过传入合适的row和column的数量来构造一个新的Matrix实例: 上例中创建了一个新的两行两列的Matrix实例。在阅读顺序从左上到右下的Matrix实例中的数组实例grid是矩阵二维数组的扁平化存储: 示意图 col0 col1 matrix[0,1] = 1.5 [0.0,1.5, 这个基本算官方的例子。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |