我試圖在 Kotlin 中接受一個 vararg 參數(shù)作為函數(shù)參數(shù),并嘗試將它傳遞給另一個帶有 vararg 參數(shù)的函數(shù)。但是,這樣做會給我一個編譯時錯誤,type mismatch: inferred type is IntArray but Int was expected.科特林:fun a(vararg a: Int){ b(a) // type mismatch inferred type is IntArray but Int was expected}fun b(vararg b: Int){}但是,如果我在 Java 中嘗試相同的代碼,它會起作用。爪哇:void a(int... a) { b(a); // works completely fine}void b(int... b) {}我怎樣才能解決這個問題?
2 回答

慕工程0101907
TA貢獻1887條經(jīng)驗 獲得超5個贊
只需*在您傳遞的參數(shù)(擴展運算符)前面放一個,即
fun a(vararg a: Int){
// a actually now is of type IntArray
b(*a) // this will ensure that it can be passed to a vararg method again
}

慕妹3146593
TA貢獻1820條經(jīng)驗 獲得超9個贊
函數(shù)a內(nèi)部的參數(shù)a()有類型IntArray,varargs傳遞給 時需要再次轉(zhuǎn)換為b. 這可以通過“擴展運算符”來完成:*
fun a(vararg a: Int) {
b(*a) // spread operator
}
添加回答
舉報
0/150
提交
取消