加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift 2.0学习笔记(Day 35)——会使用下标吗?

发布时间:2020-12-14 01:39:02 所属栏目:百科 来源:网络整理
导读:?? 原创文章,欢迎转载。转载请注明:关东升的博客 看下面的示例代码是不是使用过: var studentList: String[] = ["张三","李四","王五"]studentList[0] = "诸葛亮" var studentDictionary = [102: "张三",105: "李四",109: "王五"]studentDictionary[110]
??
原创文章,欢迎转载。转载请注明:关东升的博客

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读