PairからTripleを作る拡張関数を書いてみた - 2016/12/03の30分 Kotlinメモ🙈

PairからTripleを作る拡張関数を書いてみた - 2016/12/03の30分 Kotlinメモ🙈

今回紹介したコードとかは以下のリポジトリに雑に置いてあります。 

github.com

toを3つ以上繋げて書いたらどうなるのか

KotlinにPairがあって、toを3つ以上繋げて書いたらどうなるのかなーとやってみた。

kotlinlang.org

println(("b" to 2 to 2))
println(("b" to 2 to 2).javaClass)

■出力
((b, 2), 2)
class kotlin.Pair

ほむほむ。なるほど。Pair in Pairみたいな感じになるのね。

Pair<Pair<b,2>,2>ってことか。

あれれ?確かTripleってあったよな?

あるね。

kotlinlang.org

俺的にはA to B to Cって書いたら、Tripleになるのかなーとか思ってたけど、そうじゃないみたい。

残念。。。まあInfixには1つの引数しか指定できないからしょうがないかーと思った。

けど、Pairに拡張関数を作ればTripleにできるんじゃね?と思って、PairからTripleを作る拡張関数を書いてみた。

infix fun <A, B, C> Pair<A, B>.to(that: C): Triple<A, B, C> = Triple(this.first, this.second, that)

んまー、こんな感じかな?

んじゃ、Pair in Pairになってたやつと同じ処理を動かしてみるとー

println(("b" to 2 to 2))
println(("b" to 2 to 2).javaClass)

■出力
(b, 2, 2)
class kotlin.Triple

うむ!A to B to Cと書いて、ちゃんとTripleになってる!成功だーやたー

Kotlinには4つ以上のTupleはないけど、自分で作って1つ値が少ないクラスに拡張関数を書けば、A to B to C to Dもできるわけだ。

まとめ

拡張関数 使い方に慣れてくるとよいなー