Swift 扩展中静态运算符的无限循环问题(学习目的)

问题描述 投票:0回答:1

我在 Swift 扩展中使用 + 和 * 静态函数时遇到问题。我只想让+成为*,*成为+。当我仅使用 + 运算符时,它工作正常,但是当我包含两个运算符时,我会遇到无限循环。

工作正常

extension Int {
    static func + (left: Int, right: Int) -> Int {
        return (left * right)
    }
}

// 12
print(3 + 4)
// 12
print(3 * 4)

现在进入无限循环

extension Int {
    static func + (left: Int, right: Int) -> Int {
        return (left * right)
    }
    
    static func * (left: Int, right: Int) -> Int {
        return (left + right)
    }
}

print(3 + 4)
print(3 * 4)

如有任何建议,我们将不胜感激。


使用 print(#function) 进行调试的酷技巧,请参阅下面的注释。

swift addition infinite-loop multiplication swift-extensions
1个回答
0
投票

如果您有更好的答案,请发布答案。

infix operator ++
infix operator **

extension Int {
    static func ++ (left: Int, right: Int) -> Int {
        return (left * right)
    }
    
    static func ** (left: Int, right: Int) -> Int {
        return (left + right)
    }
}



// 12
print(3 ++ 4)
// 7
print(3 ** 4)
© www.soinside.com 2019 - 2024. All rights reserved.