博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《从零开始学Swift》学习笔记(Day 35)——会使用下标吗?
阅读量:6328 次
发布时间:2019-06-22

本文共 1930 字,大约阅读时间需要 6 分钟。


原创文章,欢迎转载。转载请注明:关东升的博客

看下面的示例代码是不是使用过:

var studentList: String[]  = ["张三","李四","王五"]studentList[0] = "诸葛亮" var studentDictionary = [102: "张三",105: "李四", 109: "王五"]studentDictionary[110] = "董六"

在访问数组和字典的时候,可以采用下标访问。其中数组的下标是整数类型索引,字典的下标是它的“键”。

 

下标

Swift中的下标相当于Java中的索引属性和C#中的索引器。

下标访问的语法格式如下:

面向对象类型 类型名 {     其他属性     ...     subscript(参数: 参数数据类型) -> 返回值数据类型 {          get {            return 返回值       }             set(新属性值) {          ...       }              }            }

下标也有类似于计算属性的
getter
setter
访问器。

getter访问器是一个方法,在最后使用return语句将计算结果返回。

setter访问器“新属性值”是要赋值给属性值。参数的声明可以省略,系统会分配一个默认的参数newValue

 

示例:二维数组

Swift中没有提供二维数组,只有一维数组Array。可以自定义一个二维数组类型,然后通过两个下标参数访问它的元素,形式上类似于C语言的二维数组。

采用下标的二维数组示例代码如下:

struct DoubleDimensionalArray {  //定义了二维数组结构体        let rows: Int, columns: Int       //存储属性rows和columns    var grid: [Int]        init(rows: Int, columns: Int) {   //构造函数        self.rows = rows        self.columns = columns        grid = Array(count: rows * columns, repeatedValue: 0)  //初始化存储属性grid    }        subscript(row: Int, col: Int) -> Int {    //定义下标                get {            return grid[(row * columns) + col]          }                set (newValue1){            grid[(row * columns) + col] = newValue1             }    }    } var ary2 = DoubleDimensionalArray(rows: 10, columns: 10) //创建并初始化10×10大小的二维数组 //初始化二维数组for var i = 0; i < 10; i++ {    for var j = 0; j < 10; j++ {        ary2[i,j] = i * j               }} //打印输出二维数组for var i = 0; i < 10; i++ {    for var j = 0; j < 10; j++ {        print("\t \(ary2[i,j])")    }    print("\n")}

 

输出结果如下:

0  0  0  0  0  0  0  0  0  0

0  1  2  3  4  5  6  7  8  9

0  2  4  6  8  10  12  14  16  18

0  3  6  9  12  15  18  21  24  27

0  4  8  12  16  20  24  28  32  36

0  5  10  15  20  25  30  35  40  45

0  6  12  18  24  30  36  42  48  54

0  7  14  21  28  35  42  49  56  63

0  8  16  24  32  40  48  56  64  72

0  9  18  27  36  45  54  63  72  81

欢迎关注关东升新浪微博@tony_关东升。

关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息

 
更多精品iOSCocos、移动设计课程请关注智捷课堂官方网站:
智捷课堂论坛网站:

 

你可能感兴趣的文章
react入门
查看>>
vs2010生成Dll文件并引用dll(C#)
查看>>
藏在兰州拉面里精益管理秘诀
查看>>
百思不得姐 one day
查看>>
19.04.16--指针笔记-参数传递
查看>>
POJ1860 Currency Exchange
查看>>
《VMware、Citrix和Microsoft虚拟化技术详解与应用实践》一2.2 ESXi简介
查看>>
C#反射方法学习
查看>>
MD5加密解密
查看>>
.Net 转战 Android 4.4 日常笔记(6)--Android Studio DDMS用法
查看>>
SVN被锁定的几种解决方法
查看>>
js如何判断是否在iframe中及防止网页被别站用 iframe嵌套 (Load denied by X-Frame-Options)...
查看>>
ios ios7 取消控制拉升
查看>>
182在屏幕中实现网格化视图效果
查看>>
本文摘录 - FlumeJava
查看>>
Scala学习(三)----数组相关操作
查看>>
Matlab基于学习------------------函数微分学
查看>>
Dundas 系列
查看>>
Windows的命令行查看,修改,删除,添加环境变量
查看>>
iOS 图文混排
查看>>