android - 如何像在 Swift 中一样从 Kotlin 中的函数返回多个值?

如何从 Kotlin 中的函数返回 3 个相同类型 (Int) 的单独数据值?

我正在尝试返回一天中的时间,我需要将小时、分钟和秒作为单独的整数返回,但是从同一个函数中一次性返回,这可能吗?

我们会像下面这样快速地做,

func getTime() -> (Int, Int, Int) {
    ...
    return ( hour, minute, second)
}

我们可以在 Kotlin 中实现这一点吗?

P.S:我知道我可以为此使用 Array 或 Hashmap,但我想知道 Kotlin 中是否存在类似 Swift 的东西。

最佳答案

您不能在 Kotlin 中创建任意元组,而是可以使用 data classes .一种选择是使用内置的 PairTriple类是通用的,可以分别保存两个或三个值。您可以将这些与 destructuring declarations 结合使用像这样:

fun getPair() = Pair(1, "foo")

val (num, str) = getPair()

您还可以解构 ListArray,直到第一个 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/

相关文章:

java - 如何在 Java 中访问 Kotlin 伴随对象?

file - 在 Kotlin 中递归列出文件

kotlin - 函数定义: fun vs val

kotlin - 从 lambdas 或 Kotlin : 'return' is not allo

kotlin - Kotlin 中的交换函数

string - 为什么 Kotlin 中 null + null 的类型是隐式 String?

android - kotlin 中的重载解析歧义错误

android - 产品 flavor : Duplicate class found

java - Kotlin 获取类型为字符串

android - 类 'MyFirebaseMessagingService' 不是抽象的,也没有