Swift のように Kotlin の関数から複数の値を返すにはどうすればよいでしょうか? 質問する

Swift のように Kotlin の関数から複数の値を返すにはどうすればよいでしょうか? 質問する

IntKotlin の関数から同じ型 ( ) の 3 つの個別のデータ値を返すにはどうすればよいでしょうか?

時刻を返そうとしています。時間、分、秒を別々の整数として返す必要がありますが、すべて同じ関数から一度に返すことは可能ですか?

Swiftでは次のようにします。

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

Kotlin でこれを実現できますか?

PS: これには Array または Hashmap を使用できることはわかっていますが、Swift のようなものが Kotlin に存在するかどうかを知りたいです。

ベストアンサー1

Kotlinでは任意のタプルを作成することはできませんが、代わりに以下を使用できます。データクラス1つの選択肢は、組み込みのPairそしてTripleそれぞれ2つまたは3つの値を保持できる汎用クラスです。これらを組み合わせて使用​​できます。構造化宣言このような:

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

val (num, str) = getPair()

ListまたはをArray最初の数まで分解することもできます。5つの要素:

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()

おすすめ記事