- 追加された行はこの色です。
- 削除された行はこの色です。
- Kotlin/4つ要素以上のタプルを作りたい へ行く。
- Kotlin/4つ要素以上のタプルを作りたい の差分を削除
#author("2023-06-16T12:15:41+00:00","default:haruki","haruki") #author("2023-06-16T12:30:19+00:00","default:haruki","haruki") * キーワード [#pfeae7ab] - Kotlin - Tuple * したいこと [#le731617] PairやTripleはあるが4つ5つの要素のタプルがないので作りたい。 * どうやって [#obf07310] 素直にデータクラスを作る他に、次のようにtypealiasと拡張プロパティでそれっぽくできる。 次のようにtypealiasと拡張プロパティでそれっぽくできる。 が、分解宣言できないので、素直にデータクラス作るのがよいかもしれない。 typealias KTuple4<A, B, C, D> = Pair<Pair<Pair<A, B>, C>, D> typealias KTuple5<A, B, C, D, E> = Pair<Pair<Pair<Pair<A, B>, C>, D>, E> @Suppress("UNUSED", "FunctionName") fun <A, B, C, D> KTuple(a: A, b: B, c: C, d: D): KTuple4<A, B, C, D> = a to b to c to d @Suppress("UNUSED", "FunctionName") fun <A, B, C, D, E> KTuple(a: A, b: B, c: C, d: D, e: E): KTuple5<A, B, C, D, E> = a to b to c to d to e val <A, B, C, D> KTuple4<A, B, C, D>.t1 @JvmName("tuple4t1") get() = first.first.first val <A, B, C, D> KTuple4<A, B, C, D>.t2 @JvmName("tuple4t2") get() = first.first.second val <A, B, C, D> KTuple4<A, B, C, D>.t3 @JvmName("tuple4t3") get() = first.second val <A, B, C, D> KTuple4<A, B, C, D>.t4 @JvmName("tuple4t4") get() = second val <A, B, C, D, E> KTuple5<A, B, C, D, E>.t1 @JvmName("tuple5t1") get() = first.first.first.first val <A, B, C, D, E> KTuple5<A, B, C, D, E>.t2 @JvmName("tuple5t2") get() = first.first.first.second val <A, B, C, D, E> KTuple5<A, B, C, D, E>.t3 @JvmName("tuple5t3") get() = first.first.second val <A, B, C, D, E> KTuple5<A, B, C, D, E>.t4 @JvmName("tuple5t4") get() = first.second val <A, B, C, D, E> KTuple5<A, B, C, D, E>.t5 @JvmName("tuple5t5") get() = second * つくりかた [#j33c33f1] KTuple(1, 1.0, "1", true) または 1 to 1.0 to "1" to true * 参考 [#wd9f6161] - [[可変長タプル on Kotlin? | KisaragiEffective.github.io:https://kisaragieffective.github.io/blog/entry/10.html]]