美文网首页
Subscripts

Subscripts

作者: 夜雨聲煩_ | 来源:发表于2017-11-02 15:03 被阅读0次
  • 附属脚本可用于类、结构体和枚举。通过在[]内传入一个或多个参数,得到返回值。例如someArray[index]someDictionary[key]
  • 附属脚本的语法类似于计算属性和实例方法,使用subscript关键字。但是不同于实例方法,附属脚本可以是read-onlyread-write,必须同时包括setget
    如下:
    //[]中的传入参数为int类型,取到的返回值也是int类型
    subscript(index: Int) -> Int {
        get {
            // return an appropriate subscript value here
        }
        set(newValue) {
            // perform a suitable setting action here
        }
    }
    
  • 去掉getset实现read-only
    subscript(index: Int) -> Int {
        // return an appropriate subscript value here
    }
    
  • subscript的使用要在类型里,不能单独使用。使用方式如下
    struct TimesTable {
        let multiplier: Int
        subscript(index: Int) -> Int {
            return multiplier * index
        }
    }
    
    let threeTimesTable = TimesTable(multiplier: 3)
    print("six times three is \(threeTimesTable[6])")
    
  • 使用set和get和其他属性一样进行读写,都省略直接使用return时实现只读
  • 类型中可以定义参数不同的多个附属脚本,然后通过参数类型来判断执行哪个附属脚本,这就是脚本重载
  • 传入参数超范围会返回地址错误,类似数组越界
    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
            }
        }
    }
    

相关文章

  • Subscripts

    附属脚本可用于类、结构体和枚举。通过在[]内传入一个或多个参数,得到返回值。例如someArray[index]、...

  • Subscripts

    Subscripts can be defined in Classes, Stuctures and Enmue...

  • Swift - Subscripts

    输入参数能够为任意类型,Subscripts 能够返回任意类型 能够使用多变参数,但是不能使用输入输出参数和默认参...

  • Subscripts(下标)

    //离上次学习swift过了好久,这才刚开始学习swift呀,坚持。 //下标//“下标可以定义在类、结构体和枚举...

  • subscripts(下标)

    subscripts(下标): 访问对象中数据的快捷方式所谓下标脚本语法就是能够通过, 实例[索引值]来访问实例中...

  • Subscripts (下标)

    Classes, structures, and enumerations can definesubscript...

  • iOS项目从 Swift3.2 升级到 Swift4.0 报错解

    Swift3.2 --> Swift4.0 报错 Subscripts returning String wer...

  • 05 来,自定义一个swift的subscript

    本文参考原文为Implementing Custom Subscripts in Swift,欢迎阅读原文。 下标...

  • 下标脚本(Subscripts)

    用下标脚本访问一个数组(Array)实例中的元素可以这样写 someArray[index] ,访问字典(Dict...

  • OneDayOneSwift[12] - Subscripts

    下标脚本 可以定义在类(Class)、结构体(structure)和枚举(enumeration)中,是访问集合(...

网友评论

      本文标题:Subscripts

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