[swift]操作符重载
2015-03-31 小文字做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