首页 > 解决方案 > Swift 中用于数学运算的自定义运算符函数

问题描述

我想为 Int 定义一个新函数,我可以像 + 一样做同样的工作,函数名称是 plus,据我在代码中看到的,我没有弄错,但我相信我必须采取更多 Swift 的步骤接受这个函数作为数学函数,Swift 会抛出这样的编译器错误:找不到“加号” 需要帮助来解决问题,谢谢。

extension Int {
    
    static func plus (lhs: Int, rhs: Int) -> Int {

        return lhs + rhs
    }
    
}

用例:

 let value: Int = 1 plus 2

ps:我知道 plus 在 Int 组下,但我希望它可以单独访问。

标签: swift

解决方案


您可以使用符号来覆盖以下运算符。但是您需要先定义优先组,然后再创建中运算符。中缀运算符适用于左侧和右侧。

precedencegroup SumOperatorPrecedence {
    lowerThan: MultiplicationPrecedence
    higherThan: AdditionPrecedence
    associativity: left
    assignment: false
}

infix operator *&:SumOperatorPrecedence
extension Int {

    static func *&(lhs: Int, rhs: Int) -> Int {
    
        return lhs + rhs
    
    }

}


let f = 2 *& 3

推荐阅读