《从零开始学Swift》学习笔记(Day 35)——会使用下标吗?


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

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

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、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com
智捷课堂论坛网站:http://51work6.com/forum.php

 


http://www.niftyadmin.cn/n/1036436.html

相关文章

最长回文子串问题-Manacher算法【建议收藏】

前面我们讲过一个关于字符串的算法&#xff1a;KMP算法。今天我们来讲另外一个字符串算法&#xff1a;Manacher算法。这个算法是用于解决一个问题叫&#xff1a;最长回文子串。 前期文章&#xff1a;KMP算法 牛客网OJ链接 说的简单一点&#xff0c;给定一个字符串&#xff0c…

《从零开始学Swift》学习笔记(Day 36)——静态方法

原创文章&#xff0c;欢迎转载。转载请注明&#xff1a;关东升的博客静态方法与静态属性类似&#xff0c;Swift中定义了静态方法&#xff0c;也称为类型方法。静态方法的定义与静态属性类似&#xff0c;枚举和结构体的静态方法使用的关键字是static&#xff1b;类静态方法使用的…

遍历二叉树的神级方法-Morris遍历【建议收藏】

在前面&#xff0c;我们简单提及过二叉树的遍历方式&#xff0c;有递归和非递归两个版本的遍历。仔细想一想&#xff0c;不管是递归的&#xff0c;还是非递归的遍历&#xff0c;两种版本的遍历都是需要耗费大量的、额外的空间。比如当我们二叉树的高度有100层&#xff0c;那么递…

《从零开始学Swift》学习笔记(Day 37)——默认构造函数

Swift 2.0学习笔记&#xff08;Day 37&#xff09;——默认构造函数原创文章&#xff0c;欢迎转载。转载请注明&#xff1a;关东升的博客 结构体和类的实例在构造过程中会调用一种特殊的init方法&#xff0c;称为构造函数。构造函数没有返回值&#xff0c;可以重载。在多个构造…

进阶JavaSE(一)- List、栈、队列

在前面&#xff0c;我们讲完了JavaSE的基础语法部分&#xff0c;现在我们就来开始学习JavaSE最后很重要的一部分&#xff1a;集合。这一块&#xff0c;面试官也会经常问到&#xff0c;比如JDK1.8后&#xff0c;HashMap底层是如何实现的…… 话不多说&#xff0c;我们来看一下今…

《从零开始学Swift》Swift 2.0学习笔记(Day 38)——构造函数与存储属性初始化

原创文章&#xff0c;欢迎转载。转载请注明&#xff1a;关东升的博客构造函数的主要作用是初始化实例&#xff0c;其中包括&#xff1a;初始化存储属性和其它的初始化。在Rectangle类或结构体中&#xff0c;如果在构造函数中初始化存储属性width和height后&#xff0c;那么在定…

【算法题】不用做任何比较,返回两个数中的最大值!

hello&#xff01;今天我们来看一道算法题&#xff01;&#xff01;&#xff01; 在线OJ链接 给定两个数&#xff0c;不做任何比较&#xff0c;返回最大值。 分析&#xff1a;我们都知道1乘以任何数&#xff0c;得到的是它本身&#xff1b;0乘以任何数都是得0。根据这个性质啊…

《从零开始学Swift》学习笔记(Day 39)——构造函数重载

原创文章&#xff0c;欢迎转载。转载请注明&#xff1a;关东升的博客构造函数作为一种特殊方法&#xff0c;也可以重载。Swift中构造函数可以多个&#xff0c;他们参数列表和返回值可以不同&#xff0c;这些构造函数构成重载。示例代码如下&#xff1a;class Rectangle {var wi…