Wae*_*ael 0 math operator-overloading ios swift inout
我想知道如何执行以下操作:-
// This is not correct
func += (inout lhs: Int, rhs: Int) -> Int {
return lhs + rhs
}
Objective Usage:- scrollTo(pageIndex: pageIndex += 1)
Run Code Online (Sandbox Code Playgroud)
您的代码很接近,但它需要做两件事:
您的代码仅返回新值,不会更新左侧值。理论上,你可以使用这个:
func += (lhs: inout Int, rhs: Int) -> Int {
lhs = lhs + rhs
return lhs
}
Run Code Online (Sandbox Code Playgroud)
但还有一个问题;标准 += 运算符具有void返回类型,并且您已经定义了一个具有Int返回类型的新运算符。
+=如果您尝试在可接受 void 返回类型的上下文中使用该运算符(这是该运算符的正常使用),编译器将给出歧义错误,因为它无法确定应该使用哪个函数:
someIndex += 1 // This will give an ambiguity compile time error
Run Code Online (Sandbox Code Playgroud)
您可以通过使用泛型定义运算符来解决此问题,其中参数符合AdditiveArithmetic(感谢@NewDev 提供此提示):
someIndex += 1 // This will give an ambiguity compile time error
Run Code Online (Sandbox Code Playgroud)
然而,我必须说,当您只需两行代码时,这看起来确实会增加相当多的复杂性;首先增加pageIndex,然后调用该函数。
| 归档时间: |
|
| 查看次数: |
684 次 |
| 最近记录: |