関数から2つの値を返したいことがあります。
データクラスを作成することもできますが、複数の値を返す関数がたくさんあると煩雑な方法となります。
PairクラスやTripleクラスは、この問題を解決します。
Pair
Pairクラスは2つの値を格納するクラスです。
(参考)「Pair – Kotlin Programming Language
Constructors
data class Pair<out A, out B> : Serializable
次のように使います。
val pair = Pair(1, "x")
Properties
格納されている値を取得するには、firstプロパティとsecondプロパティを使用します。
val pair = Pair(1, "x")
println(pair.first) //=> 1
println(pair.second) //=> x
次のように、変数に割り当てることもできます。
val pair = Pair(1, "x")
val (first, second) = pair
println(first) //=> 1
println(second) //=> x
Infix
Infix関数toを使用して簡単に宣言できます。
fun getPair() : Pair<Int, String> {
return 1 to "x"
}
val (first, second) = getPair()
println(first) //=> 1
println(second) //=> x
toList
toListメソッドを使うと、Listに変換できます。
(参考)toList – Kotlin Programming Language
val list: List<Any> = Pair(1, "x").toList()
println(list) //=> [1, x]
println(list[0]) //=> 1
println(list[1]) //=> x