美文网首页
12.下标 Subscripts Swift官方文档——版纳的笔

12.下标 Subscripts Swift官方文档——版纳的笔

作者: KevinFromChina | 来源:发表于2018-03-28 20:21 被阅读0次
    //: Playground - noun: a place where people can play
    
    import UIKit
    
    // # 下标的语法
    // 类、结构体和枚举可以定义下标.
    
    // # 下标用法
    struct TimesTable {
        let multiplier: Int
        subscript(index: Int) -> Int {
            return multiplier * index
        } // 类似于计算属性or方法
    }
    let threeTimesTable = TimesTable(multiplier: 3)
    threeTimesTable[6]
    
    // # 下标选项
    // 下标可以接收任意数量的输入形式参数,并且这些输入形式参数可以是任意类型。下标也可以返回任意类型。
    // 下标可以使用变量形式参数和可变形式参数,但是不能使用输入输出形式参数或提供默认形式参数值。
    // 下标也可以重载成多种下标
    // trick: 二维数组可用一维数组实现***
    struct Matrix {
        let rows: Int, columns: Int
        var grid: [Double]
        init(rows: Int, columns: Int) {
            self.rows = rows
            self.columns = columns
            grid = Array(repeating: 0.0, count: rows * columns)
        }
        func indexIsValid(row: Int, column: Int) -> Bool {
            return row >= 0 && row < rows && column >= 0 && column < columns
        }
        subscript(row: Int, column: Int) -> Double {
            get {
                assert(indexIsValid(row: row, column: column), "Index out of range")
                return grid[(row * columns) + column]
            }
            set {
                assert(indexIsValid(row: row, column: column), "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
    matrix[0, 0]
    

    相关文章

      网友评论

          本文标题:12.下标 Subscripts Swift官方文档——版纳的笔

          本文链接:https://www.haomeiwen.com/subject/wgwucftx.html