美文网首页
13 如何为类和结构体自定义运算符实现

13 如何为类和结构体自定义运算符实现

作者: 为了自由的白菜 | 来源:发表于2023-03-01 17:16 被阅读0次

运算符重载

  • 类和结构体可以为现有的运算符提供自定义的实现,成为运算符重载
image-20230219221857982.png image-20230219222026609.png

一元运算符重载

  • 类与结构体也能提供标准一元运算符的实现
  • 要实现前缀或者后缀运算符,需要在声明运算符函数的时候在func关键字之前指定perfix或者postfix限定符
image-20230219222238046.png

组合赋值运算符重载

  • 组合赋值运算符将赋值运算符(=)与其他运算符进行结合
  • 在实现的时候,需要把运算符的左参数设置成inout类型,因为这个参数的值会在运算符函数内直接被修改
image-20230219222528876.png

等价运算符重载

  • 自定义类和结构体不接收等价运算符的默认实现,也就是所谓的“等于”运算符(==)和“不等于”运算符(!=)
  • 要使用等价运算符来检查你自己类型的等价,需要和其他中缀运算符一样提供一个“等于”运算符重载,并且遵循标准库Equatable协议
image-20230219222855078.png
  • Swift为以下自定义类型提供等价运算符合成实现:
    • 只拥有遵循Equatable协议存储属性的结构体
    • 只拥有遵循Equatable协议关联类型的枚举
    • 没有关联类型的枚举
image-20230219223138165.png

如何在Swift里定义自己的运算符

自定义运算符

  • 除了实现标准运算符,在Swift当中还可以声明和实现自定义运算符(custom operators)
  • 新的运算符要在全局作用域内,使用operator关键字进行声明,同时还要指定prefix、infix或者postfix限定符
image-20230220214541651.png

自定义中缀运算符的优先级和结合性

  • 自定义的中缀(infix)运算符也可以指定优先级和结合性
  • 每一个自定义的中缀运算符都属于一个优先级组
  • 优先级组指定了自定义中缀运算符和其他中缀运算符的关系
image-20230220214801733.png

//AdditionPrecedence -> 加法优先级

//MultiplicationPrecedence -> 乘法优先级

image-20230220214958896.png

//更改了*^优先级,再看代码

//下方的MyPrecedence是定义了一个新的优先级, 它的优先级低于加法优先级

image-20230220215315817.png

相关文章

  • 如何为类和结构体自定义运算符实现

    运算符重载 类和结构体可以为现有的运算符提供自定义的实现,称为运算符重载。 一元运算符重载 类与结构体也能提供标准...

  • 运算符重载和自定义

    一重载 类和结构体可以为现有的运算符提供自定义的实现。 注意:这个重载运算符属于类和结构体,所以是static的 ...

  • 为类和结构体自定义运算符实现

    运算符重载 类和结构体可以为现有的运算符提供自定义的视线,称为运算符重载 一元运算符重载 类与结构体也能提供标准一...

  • swift重载或自定义操作符

    重载运算符 在Swift中,类和结构体是可以提供现有运算符的自定义实现,也就是重载现有运算符。三元运算符(a?b:...

  • Swift运算符重载介绍

    1、简介 Swift中类或结构体可以对已有的运算符进行自定义实现,赋予另外一种功能。可以成为运算符函数,即运算符重...

  • Swift第2次小结

    内容来源 Swift 5.1 教程 结构体和类 Swift 并不要求你为自定义的结构体和类的接口与实现代码分别创建...

  • Swift4-类和结构体

    类和结构体 1.Swift不需要你为自定义类和结构体创建独立的接口和实现文件。在 Swift 中,你在一个文件中定...

  • Swift3.0类和结构体(Classes and Struct

    和其他语言不同的是,Swift不需要为自定义的类和结构体创建接口和实现文件。只需要创建单一文件用来创建类和结构体,...

  • iOS开发之Swift篇(8)—— 类和结构体

    目录 版本 结构体和类对比 类型定义 & 创建实例 结构体是值类型 类是引用类型 恒等运算符 指针 版本 Xcod...

  • Swift 面向对象 2: 结构体

    1.结构体: swift中的结构体和类非常相似,也就是结构体能实现类的全部操作(功能)结构体是值类型,类是引用类型...

网友评论

      本文标题:13 如何为类和结构体自定义运算符实现

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