太空操作符 <=>

温馨提示:本文最后更新于2024-08-23 10:35:49,某些文章具有时效性,若有错误或已失效,请在下方留言

spaceship operator <=> (太空操作符)

  1. 它是二目运算符,并非三目运算符。
  2. 进行三向比较,>=<

常见的运算符分为前缀(prefix)运算符中缀(infix)运算符后缀(postfix)运算符。此处的太空运算符(<=>)为中缀运算符。

// MARK: - 定义运算符
infix operator <=>

/// 太空运算符函数的实现
/// - lhs: 操作符左侧参数
/// - rhs: 操作符右侧参数
func <=><T: Comparable>(lhs: T, rhs: T) -> Int {
    if lhs < rhs { return -1 }
    if lhs > rhs { return 1 }
    
    return 0
}

/// 使用 ComparisonResult 枚举
func <=><T: Comparable>(lhs: T, rhs: T) -> ComparisonResult {
    if lhs < rhs { return .orderedAscending }
    if lhs > rhs { return .orderedDescending }
    
    return .orderedSame
}

let left = 5
let right = 7
let result: Int = left <=> right
print(result) // -1
let result1: ComparisonResult = left <=> right
print(result1.rawValue) // -1

参考

  1. 文章来自: Hacking With Swift Plus
© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容