home wiki.fukuchiharuki.me
Menu

  • 追加された行はこの色です。
  • 削除された行はこの色です。
#author("2023-06-09T09:05:20+00:00","default:haruki","haruki")
* キーワード [#pfeae7ab]
- Kotlin
- Tuple

* したいこと [#le731617]

PairやTripleはあるが4つ5つの要素のタプルがないので作りたい。

* どうやって [#obf07310]

 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>
 
 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
 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 get() = first.first.first
 val <A, B, C, D> KTuple4<A, B, C, D>.t2 get() = first.first.second
 val <A, B, C, D> KTuple4<A, B, C, D>.t3 get() = first.second
 val <A, B, C, D> KTuple4<A, B, C, D>.t4 get() = second
 
 val <A, B, C, D, E> KTuple5<A, B, C, D, E>.t1 get() = first.first.first.first
 val <A, B, C, D, E> KTuple5<A, B, C, D, E>.t2 get() = first.first.first.second
 val <A, B, C, D, E> KTuple5<A, B, C, D, E>.t3 get() = first.first.second
 val <A, B, C, D, E> KTuple5<A, B, C, D, E>.t4 get() = first.second
 val <A, B, C, D, E> KTuple5<A, B, C, D, E>.t5 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]]