如何从 Kotlin 中的函数返回 3 个相同类型 (Int
) 的单独数据值?
我正在尝试返回一天中的时间,我需要将小时、分钟和秒作为单独的整数返回,但是从同一个函数中一次性返回,这可能吗?
我们会像下面这样快速地做,
func getTime() -> (Int, Int, Int) {
...
return ( hour, minute, second)
}
我们可以在 Kotlin 中实现这一点吗?
P.S:我知道我可以为此使用 Array 或 Hashmap,但我想知道 Kotlin 中是否存在类似 Swift 的东西。
最佳答案
您不能在 Kotlin 中创建任意元组,而是可以使用 data classes .一种选择是使用内置的 Pair
和 Triple
类是通用的,可以分别保存两个或三个值。您可以将这些与 destructuring declarations 结合使用像这样:
fun getPair() = Pair(1, "foo")
val (num, str) = getPair()
您还可以解构 List
或 Array
,直到第一个 5 elements :
fun getList() = listOf(1, 2, 3, 4, 5)
val (a, b, c, d, e) = getList()
然而,最惯用的方法是定义您自己的数据类,它允许您从函数中返回一个有意义的类型:
data class Time(val hour: Int, val minute: Int, val second: Int)
fun getTime(): Time {
...
return Time(hour, minute, second)
}
val (hour, minute, second) = getTime()
https://stackoverflow.com/questions/47307782/