说明
- 操作符预定义 prefix infix postfix
- prefix: 运算符在运算值的前方; postfix:运算符在运算值的后方;infix:运算符在运算值之间
- precedencegroup:定义运算符的其它属性
prefix operator ^
postfix operator ^-
infix operator ^^
代码示例
// 前置:返回2的n次方
prefix operator ^
prefix func ^ (vector: Double) -> Double {
return pow(2, vector)
}
print(^5) // 32.0
// 后置:返回2次方
postfix operator ^-
postfix func ^- (vector: Int) -> Int {
return vector * vector
}
print(5^-) // 25
/// 定义优先级组
precedencegroup MinePrecedence {
// lowerThan: AdditionPrecedence // 优先级, 比加法运算低
higherThan: AdditionPrecedence // 优先级,比加法运算高
associativity: left // 结合方向:left, right or none
assignment: false // true=赋值运算符,false=非赋值运算符
}
infix operator ^^: MinePrecedence // 继承 MyPrecedence 优先级组
// infix operator ^^: AdditionPrecedence // 也可以直接继承加法优先级组(AdditionPrecedence)或其他优先级组
func ^^(left: Int, right: Int) -> Int {
return left + right * 2
}
print(2 ^^ 10 + 2 ^^ 3) // 22 + 8 = 30
版权声明:本文为u013248706原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。