Swift 自定义运算符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift 自定义运算符相关的知识,希望对你有一定的参考价值。

参考技术A

Swift 提供了一组对于 C 或者 Objective-C 开发者来说十分熟悉的运算符,并且补充了一些新的(特别需要注意的是,区间运算符和空值合并(nil coalescing)运算符):

如下面这些运算符

Swfit 是可以重载运算符的,其能够让现有的运算符像 + 在其它的类型中起作用。

为了重载一个运算符,需要为运算符号简单的定义一个新的函数,并且要有适当的参数个数。

例如,重载 * 来让一个字符串重复某个特定的次数:

然而,这是一个有争议的语言特性。

如下语句:

两个数组相加,想得到 [1, 2, 3, 4] ,但重载以后:

得到的是 [4.0, 6.0]

运算符重载的问题会造成:语意不清。在使用时,要注意具体应用,并避免重载。

如果需要重载运算符要考虑多种情况,避免出现不可预见的 bug .

自定义运算符,一般可以分三步

需要注意的是, Swift 的操作符必须是全局部的,用 static 修饰。这就可能与其他 module 定义的操作符有冲突,这点需要特别注意。自定义操作符应该尽量避免重载,应简尽简,切禁写的太复杂,命名尽量规范,避免误解。

swift 在Swift中创建自定义运算符

//Creating an operator
//prefix, postfix, infix
//https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html
//https://developer.apple.com/reference/swift/swift_standard_library_operators

postfix operator ***

///Cubes value
postfix func *** (_ input: Int) -> Int {
    return input * input * input
}

2*** //8

infix operator >>>: MultiplicationPrecedence

/// Adds values and multiplies by 3
func >>>(_ lhs: Int, _ rhs: Int) -> Int {
    return (lhs + rhs) * 3
}

2>>>3 //15

以上是关于Swift 自定义运算符的主要内容,如果未能解决你的问题,请参考以下文章

Swift:自定义运算符来更新字典值

swift swift中的自定义整数运算符,允许您连接整数

Swift之深入解析如何自定义操作符

Swift 自定义运算符

为自定义私有类实现 Equatable - Swift

Swift 3、RxAlamofire 和映射到自定义对象