[英]Kotlin: Argument Type Mismatch when passing Array as vararg parameter
[英]Compile time error in passing vararg parameter to another function in Kotlin
我試圖接受一個vararg參數作為Kotlin中的函數參數,並嘗試將其傳遞給另一個帶有vararg參數的函數。 但是,這樣做會給我一個編譯時錯誤, 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中嘗試相同的代碼,它的工作原理。
Java的:
void a(int... a) {
b(a); // works completely fine
}
void b(int... b) {
}
我怎么能繞過這個?
只需在你傳遞的參數(擴展運算符)前放一個*
,即
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
}
另請參閱: Kotlin函數參考#varargs
該參數a
內部函數a()
的類型為IntArray
和需要被轉換到varargs
傳遞給時再次b
。 這可以通過“傳播運營商”完成: *
fun a(vararg a: Int) {
b(*a) // spread operator
}
之前在這里有更詳細的描述: https : //stackoverflow.com/a/45855062/8073652
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.