操作员trong swift iOS
快速操作员swiftcócácloạinhư:
- 一元 :cáctoántửdùngcho 1đốitượng
一个= ! b //前缀
a = b为! c //后缀
- 二进制 :cáctoántửdùngcho 2đốitượng
a = b * c //中缀
- 三元 :cáctoántửdùngcho 3đốitượng,vàchỉcó1làdùngchotrườnghợpkiểmtrađiềukiệnthaythế
a> 0? :
- 操作员超载
struct Vector2D :ExpressibleByArrayLiteral {
var x = 0.0,y = 0.0
init(x:Double,y:Double){
self.x = x
self.y = y
}
init(arrayLiteral:Double ...){
self.x = arrayLiteral [0]
self.y = arrayLiteral [1]
}
}
扩展Vector2D {
静态函数+ (左:Vector2D,右:Vector2D)-> Vector2D {
返回Vector2D(x:left.x + right.x,y:left.y + right.y)
}
静态函数- (左:Vector2D,右:Vector2D)-> Vector2D {
返回Vector2D(x:left.x-right.x,y:left.y-right.y)
}
静态函数* (左:双精度,右:Vector2D)-> Vector2D {
返回Vector2D(x:right.x *左,y:right.y *左)
}
静态函数/ (左:Vector2D,右:Vector2D)-> Vector2D {
返回Vector2D(x:left.x / right.x,y:left.y / right.y)
}
静态函数== (左:Vector2D,右:Vector2D)->布尔{
返回(left.x == right.x)&&(left.y == right.y)
}
}
设vectorA = Vector2D(x:10,y:10)
让vectorB = Vector2D(x:5,y:5)
让vectorC = vectorA + vectorB
- 定制运算符 :s d 1ng 1kíhiệuoperator do tađịnhnghĩa。
字首
前缀运算符++
静态前缀函数++(vector:Vector2D)-> Vector2D {
返回Vector2D(x:vector.x + 1,y:vector.y + 1)
}
设vectorB = Vector2D(x:10,y:10)
让vectorPlus1 = ++ vectorB //-> 11 11
后缀
后缀运算符++
静态后缀函数++(vector:Vector2D)-> Vector2D {
返回Vector2D(x:vector.x + 1,y:vector.y + 1)
}
设vectorB = Vector2D(x:10,y:10)
让vectorPlus1 = vectorB ++ //-> 11 11
中缀
中缀运算符•
静态函数•(左:Vector2D,右:Vector2D)-> Vector2D {
返回Vector2D(x:left.x * right.x,y:left.y * right.y)
}
让结果= vectorA•vectorB
- 优先顺序 :1个自定义运算符mới,vàtronghàmcóthựchiệncáctoántửkhác,nếukhôngsẽbịlcompi编译器。 优先级 :khaibáomứcđộutiêntoántửkhichúngta khaibáo1
// Khaibáo1 Prioritygroupcótênlà'DotProductPrecedence'
优先组 DotProductPrecedence {
highThan :AdditionPrecedence // //ưutiêncaohơn运算符+
关联性 :左
}
中缀运算符•:DotProductPrecedence
设vectorA = Vector2D(x:5,y:5)
设vectorB = Vector2D(x:10,y:10)
设vectorC = Vector2D(x:15,y:15)
令result = vectorA•vectorB + vectorC //-> Vector2D(x:65,y:65)
//NếudùnglowerThan,•thấphơn+
优先组 DotProductPrecedence {
lowerThan :AdditionPrecedence // //ưutiêncaohơn运算符+
关联性 :左
}
令result = vectorA•vectorB + vectorC //-> Vector2D(x:125,y:125)
- 通用运算符: dùnggeneral ddùngchonhiềuloạikhácnhau
Vídụdùnggeneralđểtínhlỹthừa:
中缀运算符^^
func ^^ (lhs:T,rhs:Int)-> T {
var结果= lhs
_ in 2 ... rhs {
结果* = lhs
}
返回结果
}
变量值= 10
令功率= 2
let result = value ^^ power // 100
Cácbạncóthemthêmcáchàmma苹果定义ởyy:https://github.com/andelf/Defines-Swift/blob/master/Swift.swift