2017-11-11 89 views

回答

3

從科特林參考(https://kotlinlang.org/docs/reference/functions.html):

的參數可變數目(可變參數)

的函數(通常是最後一個)的參數可以被標有 可變參數修飾符:

fun <T> asList(vararg ts: T): List<T> { 
    val result = ArrayList<T>() 
    for (t in ts) // ts is an Array 
     result.add(t) 
    return result 
} 

允許可變數目的參數傳遞給該函數:

val list = asList(1, 2, 3) 

在函數類型T的可變參數參數是作爲陣列T 的可見的,即本示例中的TS可變上面已經鍵入陣列。

當心與Java的差:在Java中可以傳遞數組作爲單個參數,而在科特林必須顯式解包陣列,使每個 數組元素的單獨的參數。但是你可以通過簡單地把*文字的相應參數之前做到這一點:

fun main(args: Array<String>) { 
    val list = listOf("args: ", *args) 
    println(list) 
} 

(看看它是如何讓你從一個數組,在一次調用一些固定值,這是Java不允許結合值)。

5

該解決方案與vararg和它是可能的迭代參數。

private fun areValidFields(vararg fields: String) : Boolean{ 
    return fields.none { it.isNullOrEmpty() || it.isBlank() } 
}