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

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

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

下标

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

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

  1. <span style="font-family:Courier;color:windowtext;font-size: 8pt; mso-ascii-font-family: Courier; mso-hansi-font-family: Courier; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt;"><span style="font-family:宋体;">面</span></span>向对象类型 类型名 {
  2. 其他属性
  3. ...
  4. subscript(参数: 参数数据类型) -> 返回值数据类型 {
  5. get {
  6. return 返回值
  7. }
  8. set(新属性值) {
  9. ...
  10. }
  11. }
  12. }

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

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

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

示例:二维数组

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

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

  1. struct DoubleDimensionalArray {  //定义了二维数组结构体
  2. let rows: Int, columns: Int       //存储属性rows和columns
  3. var grid: [Int]
  4. init(rows: Int, columns: Int) {   //构造函数
  5. self.rows = rows
  6. self.columns = columns
  7. grid = Array(count: rows * columns, repeatedValue: 0)  //初始化存储属性grid
  8. }
  9. subscript(row: Int, col: Int) -> Int {    //定义下标
  10. get {
  11. return grid[(row * columns) + col]
  12. }
  13. set (newValue1){
  14. grid[(row * columns) + col] = newValue1
  15. }
  16. }
  17. }
  18. var ary2 = DoubleDimensionalArray(rows: 10, columns: 10) //创建并初始化10×10大小的二维数组
  19. //初始化二维数组
  20. for var i = 0; i < 10; i++ {
  21. for var j = 0; j < 10; j++ {
  22. ary2[i,j] = i * j
  23. }
  24. }
  25. //打印输出二维数组
  26. for var i = 0; i < 10; i++ {
  27. for var j = 0; j < 10; j++ {
  28. print("\t \(ary2[i,j])")
  29. }
  30. print("\n")
  31. }

输出结果如下:

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

Swift—下标-备的更多相关文章

  1. Swift—下标脚本(Subscripts)

    下标脚本可以定义在类(Class).结构体(Struct).枚举(enumeration)这些目标中,可以认为是访问集合,列表或序列的快捷方式,使用下标脚本的索引设置和获取值,不需要再调用实例的特定的 ...

  2. Swift下标

    还记得字典吗? var numberOfLegs= ["spider": 8,"ant": 6, "cat":4] numberOfLegs ...

  3. Swift: 下标(Subscripts)

    类.结构体.枚举都可以定义下标(subscript),下标是访问集合.列表.序列的元素的快捷方式. 在Swift中可以为类型定义下标,而且不限于一维. 语法 下标定义的方法:跟实例方法的语法类似,su ...

  4. Swift 下标脚本

    前言 在访问一个数组实例的元素时,可以使用 Array[index] 的形式.在访问一个字典实例的元素时,可以使用 Dictionary[index] 的形式.这种方括号的形式就是 "下标脚 ...

  5. Swift—重写-备

    ========================= 重写实例属性 我们可以在子类中重写从父类继承来的属性,属性有实例属性和静态属性之分,他们在具体实现也是不同的. 实例属性的重写一方面可以重写gett ...

  6. Swift—析构函数-备

    与构造过程相反,实例最后释放的时候,需要清除一些资源,这个过程就是析构过程.在析构过程中也会调用一种特殊的方法deinit,称为析构函数.析构函数deinit没有返回值,也没有参数,也不需要参数的小括 ...

  7. Swift—静态方法-备

    静态方法与静态属性类似,Swift中定义了静态方法,也称为类型方法.静态方法的定义与静态属性类似,枚举和结构体的静态方法使用的关键字是static:类静态方法使用的关键字是class或static,如 ...

  8. swift闭包-备

    我给Swift 中的闭包一个定义:闭包是自包含的匿名函数代码块,可以作为表达式.函数参数和函数返回值,闭包表达式的运算结果是一种函数类型. Swift中的闭包类似于Objective-C中的代码块.J ...

  9. Swift - 下标脚本方法介绍及实例

    定义下标脚本之后,可以使用“[]”来存取数据类型的值. 示例1:实现一个我们自定的字符串类,可以方便的通过索引获取某一个字符值,或某一部分字符串.同时也可以通过索引,给某一部分赋值. 1 2 3 4 ...

随机推荐

  1. Pascal's Triangle II —LeetCode

    Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3, ...

  2. Java---软件试用次数(Properties类的简单使用)

    编程练习(软件试用次数) 实现一个如下的软件小功能: 记录软件运行的次数并在每次运行时提示已经运行的次数.如果运行次数大于5次,软件不再运行并给出提示:试用次数已到,请注册! 本代码只简单的介绍了软件 ...

  3. HDOJ 2200 Eddy's AC难题(数学组合概率题)

    Problem Description Eddy是个ACMer,他不仅喜欢做ACM题,而且对于Ranklist中每个人的ac数量也有一定的研究,他在无聊时经常在纸上把Ranklist上每个人的ac题目 ...

  4. ulimit开启coredump时核心转储

    [root@localhost ~]# ulimit -c [root@localhost ~]# ulimit -a core data seg size (kbytes, -d) unlimite ...

  5. android改动tab 导航 指示器颜色

    我事实上想改动的上面的蓝色条条,改成红色. 这个问题实在是困扰我了太长时间.之前參照google的这个文章: https://developer.android.com/training/basics ...

  6. 子查询in和表连接效率

    在数据查询时,尽量减少in子查询而使用表连接的方式进行,效率更高.

  7. C#截图操作方法大全

    using System.Drawing; using System.Windows.Forms; namespace WindowsFormsApplication1 { class ScreenC ...

  8. 安装android studio 出现的路径问题 tools.jar' seems to be not in Android Studio classpath

    尝试一下android studio  ,谁知出现路径问题 'tools.jar' seems to be not in Android Studio classpath. Please ensure ...

  9. Gamit解算脚本

    这是一个解算单天的shell脚本,对于初学者很有帮助. 首先就是需要在项目(四个字符)建立rinex brdc igs 还有以年纪日命名的目录,然后提前准备好station.info和lfile.文件 ...

  10. SpringMVC08转发和重定向

    public class User { private String name; private Integer age; public String getName() { return name; ...