下标的使用和运算符重载
来源:互联网 发布:java基础笔试题 编辑:程序博客网 时间:2024/05/20 04:48
/** * 下标的使用 */struct Vector3{ var x:Double = 0.0 var y:Double = 0.0 var z:Double = 0.0 //设置下标 subscript(index:Int) -> Double?{ get{ switch index{ case 0:return x case 1:return y case 2:return z default:return nil } } set{ guard let newValue = newValue else {return} switch index{ case 0:x = newValue case 1:y = newValue case 2:z = newValue default:return } } }}var v = Vector3(x: 1.0, y: 2.0, z: 3.0)v[0] = 100////////////////////////////////////struct Matrix { var data:[[Double]] let r:Int let c:Int init(row:Int,col:Int){ self.r = row self.c = col data = [[Double]]() for _ in 0..<r{ let aRow = Array(count: col, repeatedValue: 0.0) data.append(aRow) } } subscript(x:Int,y:Int) -> Double{ get{ //断言 assert(x >= 0 && x < r && y >= 0 && y < c,"Index out of Range") return data[x][y] } }}
//运算符的重载func + (left:Vector3,right:Vector3) -> Vector3{ return Vector3(x: left.x+right.x, y: left.y+right.y, z: left.z+right.z)}/** * 自定义运算符 */postfix operator +++{}//后置运算符,前置运算符prefixpostfix func +++(inout vector:Vector3) -> Vector3{ return Vector3(x: vector.x+1, y: vector.y+1, z: vector.z+1)}va+++//双目运算符,associativity结合性,precedence 优先级infix operator ^{associativity left precedence 140}func ^(left:Vector3,right:Vector3) -> Vector3{ return right}
0 0
- 下标的使用和运算符重载
- 下标运算符的重载
- 重载下标运算符
- 重载下标运算符[]
- 下标运算符重载【】
- 下标运算符重载
- 下标运算符重载[]
- 重载下标运算符
- 下标运算符[]重载
- c++下标运算符的重载
- C++ 下标运算符 重载
- PTA.重载下标运算符[ ]
- 详解C++中的函数调用和下标以及成员访问运算符的重载
- C++中几个特殊运算符的重载(= 、++、--、下标运算符的重载)
- 运算符重载和模板的使用
- C++读书笔记之 下标运算符 [] 重载 运算符重载
- C++怎样重载下标运算符 [ ]
- cppTest-7.5:重载下标运算符[]
- 如何让新员工快速成长
- HDU 1109
- angular的$watch 函数
- glib 线程池 thread_pool
- java office文档转pdf
- 下标的使用和运算符重载
- java.lang.IllegalArgumentException: Malformed \uxxxx encoding.解决方法
- Android动画
- MFC删除文件夹
- linux定时执行任务
- 断点调试express
- Error:Could not determine the dependencies of task ':app:transformClassesWithInstantRunForDebug'.
- 用Rome解析RSS
- cell中嵌套cell