我在 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) 进行调试的酷技巧,请参阅下面的注释。
如果您有更好的答案,请发布答案。
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)