2016/12/09の30分 Kotlinメモ💪
まあ30分以上やってるけどねー
今日はRetty Tech Cafe #8で「Kotlinでマッチョする話」というテーマで話すので、それのネタ仕込み。
Guild Kotlin
GuildというJavaでTupleを作るライブラリを作っていて、それのKotlin版を作ってみた。
ブログに書いた「4つと5つ値を持つTupleを作ってみた」 + 「PairからTripleを作る拡張関数を書いてみた」の集大成。
A to B to C
という感じでto
つなぎでTriple
を作ったり、A to B to C to D
で4つの値を持つTuple Quartet
を作ったりできるライブラリになってる。
Quartet
の実装は以下のようになってる。
package com.os.operando.guild /** * A tuple of four elements. * * @param F first element type * @param S second element type * @param T third element type * @param FO fourth element type * @property first First value * @property second Second value * @property third Third value * @property fourth Fourth value */ class Quartet<out F, out S, out T, out FO>( val first: F, val second: S, val third: T, val fourth: FO) { override fun toString(): String { return "Quartet(first=$first, second=$second, third=$third, fourth=$fourth)" } companion object { @JvmStatic fun <F, S, T, FO> create(first: F, second: S, third: T, fourth: FO): Quartet<F, S, T, FO> { return Quartet(first, second, third, fourth) } } } infix fun <A, B, C, D, E> Quartet<A, B, C, D>.to(that: E): Quintet<A, B, C, D, E> = Quintet(this.first, this.second, this.third, this.fourth, that)
Javaから使われることを考えてcompanion objectでcreateメソッド書いてみたけど、Java版 Guildがあるから、いらねーなこれって気づいた。
後々消す。
infix
でゴニョゴニョ書いてるのは、to
つなぎでQuartet
から5つの値を持つ Tuple Quintet
を作る拡張関数でやすん。
このto
つなぎでTuple生成するの気に入ってます。
Sample
Guild Kotlinは以下のような感じで使える。便利ー💪💪💪💪💪
package com.os.operando.guild.sample import com.os.operando.guild.to import java.time.LocalDateTime fun main(args: Array<String>) { val triple = 1 to 10L to "triple" println(triple.first) println(triple.second) println(triple.third) val quartet = 1 to 10L to true to "quartet" println(quartet.first) println(quartet.second) println(quartet.third) println(quartet.fourth) val quintet = 1 to 10L to true to LocalDateTime.now() to "quintet" println(quintet.first) println(quintet.second) println(quintet.third) println(quintet.fourth) println(quintet.five) }
後々jCenterに公開する。
group idとかどうしようかなーとかあって、まあ後々ちゃんとそこら辺色んなライブラリを参考にして公開する。
まとめ
資料作らないと...