Swift 自定义运算符

运算符函数的声明要在代码的最外层,不能在类里,尽量不要使用Swift中已经存在的标准运算符号(+,-,*,...)。


prefix 左置运算符 a = --a (--)
infix 中置运算符 a += a (+=)
postfix 右置运算符 a = a++ (++)


associativiety: 指的是和其他运算符优先级相同的情况下,是从左边开始计算还是右边
left
right
none


Example

import Foundation

/* 运算符函数的声明要在代码的最外层,不能在类里
 prefix   左置运算符   a = --a  (--)
 infix    中置运算符   a += a   (+=)
 postfix  右置运算符   a = a++  (++)
 
 associativiety: 指的是和其他运算符优先级相同的情况下,是从左边开始计算还是右边
 left
 right
 none

*/

precedencegroup toRightPrecedence {
    associativity: left                 //左结合
    higherThan: AdditionPrecedence      //比加法的优先度高
    lowerThan: MultiplicationPrecedence //比乘法的优先度低
}

precedencegroup toLeftPrecedence {
    associativity: left
    higherThan: AdditionPrecedence
    lowerThan: MultiplicationPrecedence
}

infix operator >>> : toRightPrecedence
infix operator <<< : toLeftPrecedence

func >>> (left: Int, right: Int) -> Int {
    return right - left
}

func <<< (left: Int, right: Int) -> Int {
    return left - right
}

let example1 = 5 >>> 100  //95
let example2 = 100 <<< 5  //95



//          ___
//        //|||\\
//       //|-_-|\\
//          |||
//           |
//           |
//          / \

你可能感兴趣的:(Swift 自定义运算符)