如何将列表中的多个类型传递给函数?

时间:2019-10-18 17:00:42

标签: java kotlin types

我希望能够传递不确定类型的try! realm.write { thisDiscount.percentage = "0.1" //updates this objects percent to 10% } ,每个类型的类型为MyDataStruct,将该数据作为其类型进行处理,并返回按顺序保留这些类型的列表清单。 / p>

我来自JavaScript / TypeScript背景,正在尝试学习Kotlin,所以这就是我遇到这个问题的原因。

dataList

1 个答案:

答案 0 :(得分:1)

您可以为此使用vararg声明:

fun myFunction(vararg dataList: MyDataStruct) {
    // code can use dataList as an array / list of MyDataStruct

}

这可能与您在MyDataStruct上指定的类型参数分开,但是您仍然可以使用when子句处理对象中的不同值。

例如(假设您在数据结构中保留value属性):

for(myDataStruct in dataList) {
    when (myDataStruct.value) {
        is Int -> {/*do something with int*/}
        is String -> {/*do something with string*/}
        is Boolean -> {/*do something with boolean*/}
        else -> {/*do something else*/}
    }

}

最后,如果您有一个单行函数调用,则每个{}语句中箭头后面的方括号(when)是可选的。当前示例是一堆空的匿名函数,应编译但不做任何事情。如果需要对值是特定类型的值执行多行功能,则也需要使用这些括号。