Kotlinで

マッチョ💪💪💪💪💪
する話
Retty Tech Cafe #8
About Me
Shinobu Okano
@operandoOS
Mercari, Inc.
Souzoh, Inc.
毎日30分 Kotlinやってます💪
• 雑に雑にメモを残してます
• http://hack-it-iron.hatenablog.com/archive/
category/Kotlin
Tuple
複数個の値を組みにしてまとめたもの
ようは
一時的なスコープで複数個のデータの組み合わせが

欲しいけど、Classを定義するほどでもないなー

って時に有効
Guild
https://github.com/operando/Guild/
Simple java tuples.
なぜTupleが必要だったか
• Android + JSON-RPC
• http://www.slideshare.net/shinobuokano7/
android-jsonrpc
• 理由書いてあるかも?
KotlinのPair
val pair = 1 to "pair"
println(pair.first) // 1
println(pair.second) // pair
Tripleもあるよ
val triple = Triple(1, true, "Triple")
println(triple.first) // 1
println(triple.second) // true
println(triple.third) // Triple
これをみておもった🤔
こう書けないの?🤔
val triple = 1 to true to "Triple"
こう書けないの?🤔
val triple = A to B to C
そのままでは書けなーい
• Pair in Pairになってしまう
• Pair<Pair<A,B>,C>
• ((1,true)"Triple")
なーんだ、カッコわるい😕
そもそも Pairのtoって

どうなってるんだ?🤔
そもそも Pairのtoってどうなってるんだ?🤔
public infix fun <A, B> <A, B>.to(that: B)

: Pair<A, B> = Pair(this, that)
なるほど🐼
いや、まてよ🤔
同じように拡張関数

作ればできるか☺
PairからTripleを作る拡張関数を書いてみた
infix fun <A, B, C> Pair<A, B>.to(that: C)

: Triple<A, B, C> = 

Triple(this.first, this.second, that)
じゃtoでつなげて

書いてみよう
じゃtoでつなげて書いてみよう
val triple = 1 to true to "Triple"
println(triple.first) // 1
println(triple.second) // true
println(triple.third) // Triple
println(triple.javaClass) // class kotlin.Triple
できた☺
もっとマッスル💪💪💪💪

したいでしょ?
4つの値を持つ💪💪💪💪

Tuple Quartetを作ろう
4つの値を持つTuple Quartetを作ろう
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)"
}
}
toつなぎでQuartetを

作れるようにする
TripleからQuartetを作る拡張関数を書く
infix fun <A, B, C, D> Triple<A, B, C>.to(that: D):
Quartet<A, B, C, D> = 

Quartet(this.first, this.second, this.third, that)
Quartet使ってみよう
val quartet = 1 to 10L to true to "quartet"
println(quartet.first) // 1
println(quartet.second) // 10
println(quartet.third) // true
println(quartet.fourth) // quartet
もっとマッスル💪💪💪💪💪

ほしくない??
5つの値を持つ💪💪💪💪💪

Tuple Quintetを作ろう
5つの値を持つTuple Quintetを作ろう
class Quintet<out F, out S, out T, out FO, out FI>(
val first: F,
val second: S,
val third: T,
val fourth: FO,
val five: FI) {
override fun toString(): String {
return "Quintet(first=$first, second=$second,

third=$third, fourth=$fourth, five=$five)"
}
}
はいはい、toをつなげて

書いて作りたいよね
はいはい、拡張関数拡張関数
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)
Quintet使ってみよう
val quintet = 1 to 10L to true to LocalDateTime.now() to "quintet"
println(quintet.first) // 1
println(quintet.second) // 10
println(quintet.third) // true
println(quintet.fourth) // 2016-12-09T19:45:38.959
println(quintet.five) // quintet
Libraryにしました💪💪💪💪💪
Guild Kotlin
https://github.com/operando/Guild/
tree/master/guild-kotlin
いつかjCenterとかにあげまーす
Links
• PairからTripleを作る拡張関数を書いてみた - 2016/12/03の30分 Kotlinメモ
• http://hack-it-iron.hatenablog.com/entry/2016/12/03/165601
• 4つと5つ値を持つTupleを作ってみた - 2016/12/04の30分 Kotlinメモ
• http://hack-it-iron.hatenablog.com/entry/2016/12/04/223509
• Tupleライブラリ GuildのKotlin版作ってみた - 2016/12/09の30分 Kotlinメモ
• http://hack-it-iron.hatenablog.com/entry/2016/12/09/172657
• Guild
• https://github.com/operando/Guild/
Thanks!

Kotlinでマッチョする話