作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望能够传入未定义数量的MyDataStruct
,每个都采用dataList
类型,将该数据作为其类型进行处理并返回一个包含列表的列表类型按顺序排列。
我有 JavaScript/TypeScript 背景,正在尝试学习 Kotlin,所以这就是我遇到这个问题的原因。
fun myFunction(
dataList: List<MyDataStruct<String>, MyDataStruct<Int>, MyDataStruct<Boolean>>
): List<List<String>, List<Int>, List<Boolean>> {
val data = dataList.map {
...mutableListOf<mutableListOf.typeAssiged>
}
}
最佳答案
您可以使用 vararg
声明来实现:
fun myFunction(vararg dataList: MyDataStruct) {
// code can use dataList as an array / list of MyDataStruct
}
但是,这可能与您在 MyDataStruct
上指定的类型参数不同,但您仍然可以使用 when
子句处理对象中的不同值。
例如(假设您在数据结构中保留值属性):
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
语句中箭头后面的括号 ({}
) 是可选的。当前的示例是一堆空的匿名函数,它们应该编译但不会执行任何操作。如果您需要在值属于特定类型时执行多行函数,则还需要这些括号。
关于java - 如何将列表中的多种类型传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58455257/
我是一名优秀的程序员,十分优秀!