[英]Swift - How to overload += for Int to pass the operator as a parameter in a function call like nextPage(page: pageIndex += 1)?
我想知道如何執行以下操作:-
// This is not correct
func += (inout lhs: Int, rhs: Int) -> Int {
return lhs + rhs
}
Objective Usage:- scrollTo(pageIndex: pageIndex += 1)
您的代碼很接近,但它需要做兩件事:
您的代碼僅返回新值,不會更新左側值。 理論上,你可以使用這個:
func += (lhs: inout Int, rhs: Int) -> Int {
lhs = lhs + rhs
return lhs
}
但還有另一個問題; 標准 += 運算符具有void
返回類型,並且您定義了一個具有Int
返回類型的新運算符。
如果您嘗試在可以接受 void 返回類型的上下文中使用+=
運算符(這是此運算符的正常使用),編譯器將給出歧義錯誤,因為它無法確定應該使用哪個函數:
someIndex += 1 // This will give an ambiguity compile time error
您可以通過使用泛型定義運算符來解決此問題,其中參數符合AdditiveArithmetic
(感謝 @NewDev 提供此提示):
func +=<T: AdditiveArithmetic> (lhs: inout T, rhs: T) -> T {
lhs = lhs + rhs
return lhs
}
然而,我必須說,當您可以簡單地使用兩行代碼時,這看起來確實很復雜; 一個增加pageIndex
然后調用函數。
我不確定我是否理解你,但是,如果我理解了,我會是這樣的
func nextPage(n1: Int) -> Int {
var 編號 = n1 + 1 返回編號 }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.