美文网首页
Swift运算符

Swift运算符

作者: Sweet丶 | 来源:发表于2022-11-13 17:36 被阅读0次
    1. 溢出运算符(Overflow Operator)

    运算符可见官方说明:https://developer.apple.com/documentation/swift/operator-declarations

    在Swift中,对于运算结果超出最大值或者低于最小值时,编译时期会报错误,如下:

    不使用溢出运算符会报错.png

    对于这种运算结果可能超出范围的情况,我们如果还坚持想进行,那么Swift提供了溢出运算符, 运算时如果超出了范围会从最大的一端继续向最小端继续计算,比如UInt8.max &+ 1 的值是UInt8.min = 0.

    func testOverflowOperator() {
        print(UInt8.max) // 255
        var a = UInt8.max
    //    a += 1 // 编译时报错Arithmetic operation '127 + 1' (on type 'Int8') results in an overflow
    //    a = UInt8.min
    //    a -= 1// 编译时报错同上
        // 下面是溢出运算符 &+ &— &* 的例子。结果是如果超出了会又从头开始计数
        print("UInt8.max &+ 1 =", (a &+ 1)) // 0
        print("UInt8.max &* 1 =", (a &* 2)) // 254
        print("UInt8.max &<< 1 =", (a &<< 1)) // 254
        a &+= 1
        print("UInt8.max &+= 1 =", (a)) // 0
        
        a = UInt8.min
        print("UInt8.min &- 1 =", (a &- 1)) // 255
        print("UInt8.min &>> 1 =", (a &>> 1)) // 0
        a &-= 1
        print("UInt8.min &-= 1 =", (a)) // 255
    }
    
    2. 运算符重载(Overflow Operator)

    运算符重载指的是:类、枚举、结构体可以为现有的运算符提供自定义实现。

    比如下面截图中为结构体Point增加自定义实现。 运算符重载.png
    3. 自定义运算符

    可以参照HandyJson库中的infix operator <<< : AssignmentPrecedence去实现自己的特定操作符。

    自定义操作的一些关键字.png

    相关文章

      网友评论

          本文标题:Swift运算符

          本文链接:https://www.haomeiwen.com/subject/rrfkxdtx.html