小文字 吃饭,睡觉,溜狗头

[swift]操作符重载

img

做c++开发的都知道,再c++里面是允许重载运算符的,在swift中也可以重载运算符,下面来重载一下++,+ 上上一篇中曾今定义了一个MyClass类,现在我们通过重载++和+使得MyClass的实例可以向数值型变量一样进行相加和自增操作。

重载在形式上非常简单就和定义一个方法一样

class MyClass {
var money = 100 as Int
init() {

}
init(money : Int) {
self.money = money
}
func addMonet(count : Int){
money += count;
}
}

/**
* 重载++,运算符在变量后
**/

postfix func ++ (inout myClass : MyClass) -> MyClass {
var newClass = MyClass(money : myClass.money)
myClass.money++
return newClass
}
/**
* 重载++,运算符在变量前
**/

prefix func ++ (inout myClass : MyClass) -> MyClass {
myClass.money++
var newClass = MyClass(money : myClass.money)
return newClass
}

/**
* 重载+
**/

func + (left : MyClass, right : MyClass) -> MyClass {
var newClass = MyClass(money : left.money + right.money)
return newClass
}

现在,可以直接对MyClass的实例进行自增和相加操作了。

let newClass = myClass++
myClass
let newClass2 = ++myClass

var a = 3
a++
++a
let class3 = newClass+newClass2