• swift 笔记 (十二) —— 下标


    下标
    swift同意我们为 类。结构体,枚举 定义下标,以更便捷的方式訪问一大堆属性。比方Array和Dictionary都是结构体,swift的project师已经为这两个类型提供好了下标操作的代码。所以。我们才干够通过 myArray[2]这样的方式,读取和改写这个struct中保存的数据。

    并且。一个类型中能够定义多种下标訪问方式(重载,关于重载,在后面的笔记中会提到。这里先不用太在意)


    下标能够定义为“读写”型的,也能够定义为”仅仅读”型,这样的行为。是通过定义一组操作完毕的,这与之前笔记中提到过的用于计算的属性的setter和getter是一样的:

    下标定义形式:

    “读写”型:
    subscript(index: Int) -> Int {
         get {

         }
         set(newValue) {

         }
    }

    “仅仅读”型:
    subscript(index: Int) -> Int {
         //前面的笔记中有提到,由于仅仅有一个get方法,是能够省掉get{ 与 }的。
    }

    官方的样例:


    定义了一个叫 TimesTable的结构体,它有一个“仅仅读”型下标的定义,通过下标语法,能够取得到multiplier那么多倍的index值。

    。。由于那是 multiplier * index嘛。。

    。。

    所以,最后一个println的结果是18.(multiplier的值被初始化为3, 3*6 = 18)

    下标能够使用不论什么类型做为输入參数。也就是说。我们能够把class, struct, enum, Int, Double, String 等等,当做下标的參数使用。可是这个參数不能是in-out类型的,也不能有默认值。

    前面的笔记中没有提到过不论什么关于“多维数组”的词,也没有相关的样例。由于我也不知道怎么弄,囧。

    可是有了自己定义下标的话,就不一样了,事情就变得简单了,一切由我们自己说了算。无论是二维。三维。四维,不论什么维度上保存什么类型等等,一切都由我们自己说了算, 拿二维数组来举例(事实上是官方的样例):


    定义了一个矩阵类型 Matrix, 通过var grid: Double[] 的使用能够看到, 第7行,定义了一个一维的Array来保存全部的数据。 第12行開始定义了下标的訪问行为, 能够get, 也能够set, 所以这个下标是个“读写”型的。
    依据下标的參数 row和 column能够计算出我们要訪问的元素的在Array中的位置,通过Array的下标能够直接读取或者写入我们的数据。

    var myMatrix = Matrix(row: 2, columns: 2)
    myMatrix[0, 0] = 8

    println(myMatrix[0, 0])   //得到8

    至此。我们就能够開始快乐的使用二维数组了~~~多维的也一样 
  • 相关阅读:
    oracle 存储过程
    IBM Http Server 7 下载安装
    设置linux静态IP地址
    was7补丁下载安装
    JDBC提供程序和数据源配置
    db2替换激活永久lic
    db2基本命令
    db2创建数据库
    linux解压命令
    linux下安装db2_v9.7
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5113671.html
Copyright © 2020-2023  润新知