微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

swift2 Subscripts

下标脚本语法


subscript(index: Int) -> Int {
    get {
      // 返回与入参匹配的Int类型的值
    }

    set(newValue) {
      // 执行赋值操作
    }
}


实例如下:

struct TimesTable {
    let multiplier: Int
    subscript(index: Int) -> Int {
        return multiplier * index
    }
}
let threeTimesTable = TimesTable(multiplier: 3)
print("3的6倍是\(threeTimesTable[6])")
// 输出 "3的6倍是18"



下标脚本选项


可以定义多个参数的形式
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) + column] = newValue
        }
    }
}
var matrix = Matrix(rows: 2,columns: 2)

matrix[0,1] = 1.5
matrix[1,0] = 3.2

let someValue = matrix[2,2]
// 断言将会触发,因为 [2,2] 已经超过了matrix的最大长度

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐