操作员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