Swift自定义操作符(一)
前言
最近在研究GPUImage3代码,偶然看到如下这一段代码
camera --> operation --> renderViewinfix operator --> : AdditionPrecedence
//precedencegroup ProcessingOperationPrecedence {
//associativity: left
////higherThan: Multiplicative
//}
@discardableResult public func -->(source:ImageSource, destination:T) -> T {
source.addTarget(destination)
return destination
}
在学习过程中发现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:自定义优先级的关键字然后就是通过func 关键字定义该操作数的函数功能
InnerProductPrecedence:自定义优先级名
associativity:是否允许结合律,可取值为none、left。none代表只允许两个操作数计算,left代表如果多个同类的操作符顺序出现那么按照从左往右的顺序计算(例如加法,减法)
higherThan:代表其优先级要高于某个优先级
推荐阅读
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- MongoDB,Wondows下免安装版|MongoDB,Wondows下免安装版 (简化版操作)
- SpringBoot调用公共模块的自定义注解失效的解决
- python自定义封装带颜色的logging模块
- 在线版的迅捷思维导图怎么操作()
- 列出所有自定义的function和view
- 操作系统|[译]从内部了解现代浏览器(1)
- Swift中willSet和didSet的简述
- 数据库总结语句
- Hacking|Hacking with iOS: SwiftUI Edition - SnowSeeker 项目(一)