Swift开篇010->下标
2016-06-01 17:08
337 查看
PART_ONLY 下标(
简介
下标可定义在类、结构体、枚举中,是访问集合、列表、序列元素的快捷方式
语法格式
下标了设定为读写或只读
演示
下标用法举例(
本例通过下标返回将可选类型(
通过下标删除键对应的值:将键对应的值赋值为
下标选项
下标可接受任意数量、类型的入参,下标的返回值也可是任意类型
下标可使用变量入参和可变参数,但不能用输入输出参数,也不能给参数设置默认值
类或结构体可提供多个下标实现,使用时通过入参的数量和类型自动匹配
下为矩形结构体的案例
以上。如有错误和疑问,欢迎指正提出。 catface.wyh@gmail.com
subscript)
简介
下标可定义在类、结构体、枚举中,是访问集合、列表、序列元素的快捷方式
语法格式
下标了设定为读写或只读
// 读写 subscript(index: Int) -> Int { get { // 返回一个适当的 Int 类型的值 } // newValue 类型与下标返回类型相同 set(newValue) { // 执行适当的赋值操作 } }
// 只读 subscript(index: Int) -> Int { // 返回一个适当的 Int 类型的值 }
演示
struct TimesTable { let multiplier: Int // 只读的下标 subscript(index: Int) -> Int { return multiplier * index } } let threeTimesTable = TimesTable(multiplier: 3) // threeTimesTable[6] 的值为 18
下标用法举例(
Dictionary)
本例通过下标返回将可选类型(
Int?)
通过下标删除键对应的值:将键对应的值赋值为
nil即可
var animals = ["spider": 8, "ant": 6, "cat": 4] // 通过下标插入新的键值对 animals["bird"] = 2
下标选项
下标可接受任意数量、类型的入参,下标的返回值也可是任意类型
下标可使用变量入参和可变参数,但不能用输入输出参数,也不能给参数设置默认值
类或结构体可提供多个下标实现,使用时通过入参的数量和类型自动匹配
下为矩形结构体的案例
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) + column] = newValue } } } // 构造 2*2 的矩阵实例 var matrix = Matrix(rows: 2, columns: 2) matrix[0, 1] = 1.5 // 赋值 matrix[1, 0] = 3.2 // 赋值 let someValue = matrix[2, 2] // 越界:断言触发
以上。如有错误和疑问,欢迎指正提出。 catface.wyh@gmail.com
相关文章推荐
- Swift之Umbrella header .h not found
- swift2.0 学习笔记Twelve
- Swift开篇009->方法
- Swift学习笔记(4)使用UIImagePickerController实现从设备图片库和照相机获取图片
- SwiftyiRate中文说明
- SwiftyiRate中文说明
- 使用CocoaPods创建Pod
- 谈谈 Swift 中的 map 和 flatMap
- iOS swift零基础学习心得
- Swift开篇008->属性
- 每个ios开发者都应该知道Top 10 Swift三方库
- Swift学习第八枪--协议(二)
- Swift学习第七枪--协议(一)
- XCODE7,ios9 swift 使用TBXML
- swift数据交换
- swift字符串转double,double转字符串
- swift2.0 学习笔记Eleven
- Swift开篇007->类和结构体
- Swift-扩展(Extensions)(十八)
- Swift-guard & defer