• 《从零开始学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("	 (ary2[i,j])")
    
        }
    
        print("
    ")
    
    }

    输出结果如下:

    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_关东升。

    关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
                              ​
    更多精品iOS、Cocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com
    智捷课堂论坛网站:http://51work6.com/forum.php

  • 相关阅读:
    eharts入门篇一
    手机侧滑导航栏
    用js+cookie实现商城的购物车功能
    实现文字底部居中
    超出两行或三行显示省略号
    clear-fix清除浮动的两种写法
    sass学习入门篇(三)
    如何回答面试中问到的Hibernate和MyBatis的区别
    设计模式之--单例模式
    设计模式之---工厂模式
  • 原文地址:https://www.cnblogs.com/iOS-Blog/p/4961361.html
Copyright © 2020-2023  润新知