《从零开始学Swift》学习笔记(Day 46)——下标重写
来源:互联网 发布:软件开发项目决算书 编辑:程序博客网 时间:2024/04/29 07:59
下标是一种特殊属性。子类属性重写是重写属性的getter和setter访问器,对下标的重写也是重写下标的getter和setter访问器。
下面看一个示例:
class DoubleDimensionalArray {
let rows: Int, columns: Int
var grid: [Int]
init(rows: Int, columns: Int) {
self.rows = rows
self.columns = columns
grid = Array(count: rows * columns, repeatedValue: 0)
}
subscript(row: Int, col: Int) -> Int { //定义下标
get {
return grid[(row * columns) + col]
}
set {
grid[(row * columns) + col] = newValue
}
} //定义下标
}
class SquareMatrix: DoubleDimensionalArray {
override subscript(row: Int, col: Int) -> Int { //重写父类下标
get {
return super.grid[(row * columns) + col]
}
set {
super.grid[(row * columns) + col] = newValue * newValue
}
}
}
var ary2 = SquareMatrix(rows: 5, columns: 5)
for var i = 0; i < 5; i++ {
for var j = 0; j < 5; j++ {
ary2[i,j] = i + j
}
}
for var i = 0; i < 5; i++ {
for var j = 0; j < 5; j++ {
print("\t\t \(ary2[i,j])")
}
print("\n")
}
其中super.grid[(row * columns) + col]语句中使用super调用父类的grid属性。
其中super.grid[(row * columns) + col] = newValue * newValue语句是给父类的grid属性赋值。
下面看一个示例:
class DoubleDimensionalArray {
let rows: Int, columns: Int
var grid: [Int]
init(rows: Int, columns: Int) {
self.rows = rows
self.columns = columns
grid = Array(count: rows * columns, repeatedValue: 0)
}
subscript(row: Int, col: Int) -> Int { //定义下标
get {
return grid[(row * columns) + col]
}
set {
grid[(row * columns) + col] = newValue
}
} //定义下标
}
class SquareMatrix: DoubleDimensionalArray {
override subscript(row: Int, col: Int) -> Int { //重写父类下标
get {
return super.grid[(row * columns) + col]
}
set {
super.grid[(row * columns) + col] = newValue * newValue
}
}
}
var ary2 = SquareMatrix(rows: 5, columns: 5)
for var i = 0; i < 5; i++ {
for var j = 0; j < 5; j++ {
ary2[i,j] = i + j
}
}
for var i = 0; i < 5; i++ {
for var j = 0; j < 5; j++ {
print("\t\t \(ary2[i,j])")
}
print("\n")
}
其中super.grid[(row * columns) + col]语句中使用super调用父类的grid属性。
其中super.grid[(row * columns) + col] = newValue * newValue语句是给父类的grid属性赋值。
0 0
- 《从零开始学Swift》学习笔记(Day 46)——下标重写
- 《从零开始学Swift》学习笔记(Day 46)——下标重写
- 《从零开始学Swift》学习笔记(Day 35)——会使用下标吗?
- 《从零开始学Swift》学习笔记(Day 35)——会使用下标吗?
- 《从零开始学Swift》学习笔记(Day 44)——重写属性
- 《从零开始学Swift》学习笔记(Day 45)——重写方法
- 《从零开始学Swift》学习笔记(Day 44)——重写属性
- 《从零开始学Swift》学习笔记(Day 45)——重写方法
- 《从零开始学Swift》学习笔记(Day 1)——我的第一行Swift代码
- 《从零开始学Swift》学习笔记(Day 2)——使用Web网站编写Swift代码
- 《从零开始学Swift》学习笔记(Day 3)——Swift 2.0之后增加的关键字
- 《从零开始学Swift》学习笔记(Day 17)——Swift中数组集合
- 《从零开始学Swift》学习笔记(Day 56)—— Swift编码规范之命名规范
- 《从零开始学Swift》学习笔记(Day 3)——Swift 2.0之后增加的关键字
- 《从零开始学Swift》学习笔记(Day 17)——Swift中数组集合
- 《从零开始学Swift》学习笔记(Day 56)——Swift编码规范之命名规范
- 《从零开始学Swift》学习笔记(Day 28)——总结使用问号(?)和感叹号...
- 《从零开始学Swift》学习笔记(Day 8)——小小常量、变量大作用
- vim
- 关于
- ubuntu16.04+gtx1070/1060+cuda8.0+caffe安装、测试[亲测]
- 综合方法selenium整理
- 从OpenCV中抠CUDA代码——ORB_GPU算法(一)
- 《从零开始学Swift》学习笔记(Day 46)——下标重写
- Android Studio报错:Unsupported method: AndroidProject.getPluginGeneration().
- selenium在IE、Chrome和Firefox运行
- CSS 颜色代码大全
- Makefile,详细栗子!!
- huffman 树
- Codeforces 749C Voting 贪心+模拟
- 【深入浅出jQuery】源码浅析2--奇技淫巧
- 解决IE8以下不支持getElementsByClassName的方法