簡體   English   中英

將vararg參數傳遞給Kotlin中的另一個函數時編譯時間錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM