美文网首页
Swift自定义操作符(一)

Swift自定义操作符(一)

作者: 仙人掌__ | 来源:发表于2021-05-20 20:51 被阅读0次

前言

最近在研究GPUImage3代码,看到如下这一段代码

infix operator --> : AdditionPrecedence
//precedencegroup ProcessingOperationPrecedence {
//    associativity: left
////    higherThan: Multiplicative
//}
@discardableResult public func --><T:ImageConsumer>(source:ImageSource, destination:T) -> T {
    source.addTarget(destination)
    return destination
}

上面的代码自定义了一个运算符 --> 这个运算符需要两个操作数,优先级与+和-一样,该操作符使用的代码

camera --> operation --> renderView

它与GPUImage中addTarget:方法效果一样。

在学习过程中发现GPUImage3的代码比GPUImage的代码简洁很多,这里不得不为Swift的简洁特性点赞。下面就来看看Swift中自定义操作符的语法规则

自定义运算符的语法

1、infix|prefix|postfix operator 运算符 : 优先级描述符
2、func 运算符() -> 返回值 {}  定义该运算符的函数功能

这两个步骤缺一不可,接下来逐个解释:
infix|prefix|postfix 代表了操作符的个数;infix为需要两个操作符,prefix代表左操作符(类似++a) postfix代表右操作符(类似a++)
operator 关键字 重载
运算符 要定义的自定义运算符,例如上面的-->
: 这里的冒号不可少
优先级描述符 代表了该运算符的优先级,可以使用系统内置的优先级描述符例如AdditionPrecedence(和加减法优先级一样)、MultiplicationPrecedence(和乘除法优先级一样),也可以使用自定义的优先级描述符,自定义语法如下:

precedencegroup InnerProductPrecedence {
    associativity: none
    higherThan: MultiplicationPrecedence, AdditionPrecedence
}

precedencegroup:自定义优先级的关键字
InnerProductPrecedence:自定义优先级名
associativity:是否允许结合律,可取值为none、left。none代表只允许两个操作数计算,left代表如果多个同类的操作符顺序出现那么按照从左往右的顺序计算(例如加法,减法)
higherThan:代表其优先级要高于某个优先级

然后就是通过func 关键字定义该操作数的函数功能

相关文章

  • Currying Operator

    柯里化 操作符 可以直接重载+ - 乘操作符,在swift中有了这些操作符的定义,如果想自定义操作符,比如点乘+*...

  • Swift教程之基本操作符

    基本操作符 本章介绍Swift中的常见操作符,并介绍使用自定义操作符实现复杂运算。 术语 操作符包括一元、二元和三...

  • Swift自定义操作符(一)

    前言 最近在研究GPUImage3代码,看到如下这一段代码 上面的代码自定义了一个运算符 --> 这个运算符需要两...

  • Swift 操作符

    Swift 支持重载操作符这样的特性。可以直接重载像 +,-,* 这样的操作符,因为 Swift 中已经有定义了 ...

  • Swift 自定义操作符

    项目PlayGround 在GitHub: https://github.com/zColdWater/Swift...

  • swift 自定义操作符

    声明 infix operator +~ 实现 func +~ (inout firstValue: Int,...

  • Swift自定义操作符

    正则表达式是我们经常要用到的方法,今天我们通过一种简单的自定义操作符来重新认识下正则表达式的最优写法: prece...

  • iOS学习周报三

    在Swift中用??操作符替代判空 在C#中也是有??操作符的,用法和Swift类似用法如下: 相当于 开源项目 ...

  • RxJava学习笔记之Single

    特点: 使用说明: 操作符: 操作符返回值说明composeSingle创建一个自定义的操作符concat and...

  • Swift 操作符

    Swift 支持重载操作符的特性,让我们可以自定义一些简单的计算。最经典的例子就是两个二维向量之间的计算了。 首先...

网友评论

      本文标题:Swift自定义操作符(一)

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