美文网首页swift
Swift基础12(高级运算符)

Swift基础12(高级运算符)

作者: SunshineBrother | 来源:发表于2020-01-28 17:52 被阅读0次

溢出运算符(Overflow Operator)

swift的算数运算符出现溢出的时会抛出错误

我们可以使用溢出运算符来支持溢出运算。

var a:UInt8 = UInt8.max
a = a + 1

我们使用溢出运算符&=

var a:UInt8 = UInt8.max
a = a &+ 1
print(a)  //0

溢出运算符是在达到最大值以后,在重新从最小值开始

当然,你有意在溢出时对有效位进行截断,你可采用溢出运算,而非错误处理。Swfit为整型计算提供了5个&符号开头的溢出运算符。

  • 溢出加法 &+
  • 溢出减法 &-
  • 溢出乘法 &*
  • 溢出除法 &/
  • 溢出求余 &%

运算符重载

在类、结构体、枚举可以为现有的运算符提供自定义的实现,这个操作叫做:运算法重载

struct Point {
    var x:Int, y:Int

    static func + (_ p1:Point, _ p2:Point) -> Point{
        Point(x: p1.x + p2.x, y: p1.y + p2.y)
    }
    
    static func - (_ p1:Point, _ p2:Point) -> Point{
        Point(x: p1.x - p2.x, y: p1.y - p2.y)
    }
    
    static prefix func - (_ p:Point) -> Point{
        Point(x: -p.x, y: -p.y)
    }
    
 }

Equatable

想要知道两个实例是否等价,一般走法就是遵守Equatable协议,重载===运算符

struct Person :Equatable{
    var age: Int
    static func == (_ p1:Person, _ p2:Person) ->Bool{
        p1.age == p2.age
    }
}

比较运算法Comparable

比较两个实例的大小,一般遵守Comparable协议,重载相应的运算符

struct Student:Comparable {
    var age:Int
    init(age:Int) {
        self.age = age
    }
    
    static func < (_ s1:Student, _ s2:Student) -> Bool{
        s1.age < s2.age
    }
}

自定义运算符

可以自定义新的运算符:在全局作用域使用operator进行声明

  • prefix operator前缀运算
  • postfix operator后缀运算
  • infix operator中缀运算
struct Point {
    var x:Int, y:Int
    
    static prefix func ++ (_ p: inout Point) -> Point{
        p = Point(x: p.x + p.x, y: p.y + p.y)
        return p
    }
}

相关文章

  • Swift基础12(高级运算符)

    溢出运算符(Overflow Operator) swift的算数运算符出现溢出的时会抛出错误 我们可以使用溢出运...

  • 5.1 高级运算符与枚举

    除了算术运算符、逻辑运算符等基础的运算符外,Swift语言还提供了许多关于运算符的高级使用技巧。开发者甚至可以重新...

  • 第二十四节 Swift 高级运算符

    除了加减乘除运算符,常用的位运算符在 Swift里属于高级运算符。 其它的高级运算符还有移位运算符和溢出加法运算符...

  • 26_高级运算符

    除了基本运算符,Swift 中还有许多可以对数值进行复杂运算的高级运算符。这些高级运算符包含了在位运算符和移位运算...

  • Swift编程二十八(高级运算符)

    案例代码下载 高级运算符 除了基本运算符中描述的运算符之外,Swift还提供了几个执行更复杂值操作的高级运算符。这...

  • swift2.2 - 高级运算符

    高级运算符 文档地址 作为 基本运算符 的补充,Swift 提供了几个高级运算符执行对数传值进行更加复杂的操作。这...

  • 26 高级运算符

    高级运算符 除了Basic Operators中描述的基本运算符之外,Swift还提供了几个执行更复杂值操作的高级...

  • 27、【Swift】高级运算符 - Advanced Opera

    Swift 运算符基本运算符高级运算符(包括 C 或 Objective-C 所有按位和移位运算符。) 与 C 的...

  • -128补码10000000

    最近在学Swift, 在学到高级运算符的时候, 用到了位运算, 然后发现自己把计算机基础的进制忘的差不多了. 在这...

  • Advanced Operators(高级运算符)

    // 语法最后一章了老铁~~~ // 个人认为: 高级运算符也是容易出错的地方 //“Swift 中的算术运算符默...

网友评论

    本文标题:Swift基础12(高级运算符)

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