swift详解之八---------------下标脚本
来源:互联网 发布:未找到移动网络的信号 编辑:程序博客网 时间:2024/05/20 03:06
swift详解之八—————下标脚本
下标脚本 可以定义在类(Class)、结构体(structure)和枚举(enumeration)这些目标中,可以认为是访问对象、集合或序列的快捷方式,不需要再调用实例的特定的赋值和访问方法
关键字 subscript
下标脚本可以设定为 只读 和 读写 类似于getter
和 setter
//语法subscript(index : Int) ->Int{ get{ } set(newValue){ }}
下面看一个例子 :
struct Tables { var mul = 2; //只读的下标脚本 subscript(index :Int)->Int{ return 2*index }}
let tb = Tables()print(tb[2]) //4
下标脚本 可以传入多个参数 或者可变类型 ,但是inout和默认参数不行 。
一个类或者结构体中可以有多个下标脚本 可以根据传入的参数类型进行区分
struct Matrix { let rows: Int, columns: Int var grid: [Double] init(rows: Int, columns: Int) { self.rows = rows self.columns = columns grid = Array(count: rows * columns, repeatedValue: 0.0) } func indexIsValidForRow(row: Int, column: Int) -> Bool { return row >= 0 && row < rows && column >= 0 && column < columns } subscript(row: Int, column: Int) -> Double { get { assert(indexIsValidForRow(row, column: column), "Index out of range") return grid[(row * columns) + column] } set { assert(indexIsValidForRow(row, column: column), "Index out of range") grid[(row * columns) + columns] = newValue } }}
Matrix提供了一个两个入参的构造方法,入参分别是rows和columns,创建了一个足够容纳rows * columns个数的Double类型数组。为了存储,将数组的大小和数组每个元素初始值0.0,都传入数组的构造方法中来创建一个正确大小的新数组
你可以通过传入合适的row和column的数量来构造一个新的Matrix实例:var matrix = Matrix(rows: 2, columns: 2)
上例中创建了一个新的两行两列的Matrix实例。在阅读顺序从左上到右下的Matrix实例中的数组实例grid是矩阵二维数组的扁平化存储:
示意图
grid = [0.0, 0.0, 0.0, 0.0]
col0 col1
row0 [0.0, 0.0,
row1 0.0, 0.0]
将值赋给带有row和column下标脚本的matrix实例表达式可以完成赋值操作,下标脚本入参使用逗号分割
matrix[0, 1] = 1.5
matrix[1, 0] = 3.2
上面两条语句分别让matrix的右上值为 1.5,坐下值为 3.2:
[0.0, 1.5,
3.2, 0.0]
这个基本算官方的例子。
学习iOS,有他就够了,小码哥视频,传智、黑马、各种swift书籍
- swift详解之八---------------下标脚本
- Swift之下标脚本
- Swift-下标脚本
- Swift 中的下标脚本
- Swift 下标脚本
- Swift(十二、方法&下标脚本)
- Swift 下标脚本(Subscripts)
- Swift学习:2.12 下标脚本
- Swift学习之下标
- Swift入门教程10-subscript下标脚本
- Swift学习- 下标脚本(十二)
- swift_022(Swift 的下标脚本)
- Swift下标
- Swift下标
- swift 下标
- Swift下标
- Swift的属性,方法,下标脚本以及继承
- IOS开发语言Swift入门连载---下标脚本
- 伊甸园eden剧情视频合集
- Linux 脚本初探
- Hadoop yarn OutOfMemoryError: unable to create new native thread
- leetcode-118-Pascal's Triangle
- PHP 中this,self,parent的区别
- swift详解之八---------------下标脚本
- codecombat之边远地区的森林1-11关及地牢38关代码分享
- 第5周工作周报
- uvalive 2957 Bring Them There(最大流)
- 我的PSoC学习(一)(PSoC Creator 2.0+win7+CY8C38):入门级别的五个工程
- 重装系统
- java类对象与byte数组的互相转换
- TCP协议增强器的应用实践
- MyBatis学习(二)