zoukankan      html  css  js  c++  java
  • 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

    至此。我们就能够開始快乐的使用二维数组了~~~多维的也一样 
  • 相关阅读:
    站立会议(二)
    站立会议(一)
    买书优惠问题
    软件的NABCD----安装部分
    你的灯亮着吗读书笔记(一)
    软件工程概论---环状二维数组最大子数组和
    梦断代码读书笔记(三)
    梦断代码读书笔记(二)
    课程作业3.10
    软件工程作业提交3.06
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5113671.html
Copyright © 2011-2022 走看看