kdnakt blog

hello there.

会社でKotlin勉強会(第28回)を開催した

今週は第28回を開催しました。

もうすぐ30回目……!

 

前回の様子はコチラ↓ 

kdnakt.hatenablog.com

 

 

[第28回の様子]

2020/08/26に第28回を開催した。

 

今回は通常どおり水曜日開催。

参加メンバーは自分をいれて5名!今回は前回から1人減ってしまったものの、一時期1on1状態だった勉強会が盛況といっていいくらいに人がいるのでとても嬉しい。続けて行こう。

 

勉強会本編の内容としては、練習問題集Kotlin Koansの第3章 Collectionsをちまちまと進めた。Partitionを終わらせFoldに取り組もうとしたところで時間ぎれ。進捗は70%となり、前回比+2%。前回の10分の1の進捗とはいえ、確実に進んでいる。

 

[学んだことや疑問点]

  • Partition
    • そもそもPartitionってなんだっけという記憶がなかった
    • 右側のサンプルを見てなんとなく思い出す(val (a, b) = list.partition { ... }で分割できるとか、firstsecondってプロパティでアクセスできるとか)
    • getCustomersWithMoreUndeliveredOrdersThanDelivered()みたいな長いメソッド名つけるときは割と躊躇するんだけど、英語ネイティブの人(たぶん)でもこういう命名にするんだな、と思うとちょっと安心。
    • なんとなく1行で実装できそう、ということで無理やりひねりだしたが、模範回答の方が読みやすかったかも。
// 勉強会での回答
fun Shop.getCustomersWithMoreUndeliveredOrdersThanDelivered(): Set<Customer> =
customers.partition {
    it.orders.count {it.isDelivered} < it.orders.count{!it.isDelivered}
}.first.toSet()

// 模範回答
fun Shop.getCustomersWithMoreUndeliveredOrdersThanDelivered(): Set<Customer> =
customers.filter {
    val (delivered, undelivered) = it.orders.partition { it.isDelivered }
    undelivered.size > delivered.size
}.toSet()
  • Fold
    • そもそもFoldってなんだ?というところからスタート。
    • なんとなく、初期値とラムダ式を与えて、集計していくような処理だということは理解できた
    • ただそれを求められている問題にどう適用していこうか、と参加者であれこれ相談しているうちにタイムアップ。無念。

 

[まとめ]

今回も引き続き練習問題集Kotlin Koansを進めた。今回は1回だけだが、「やったー!」を実施できた!

来週も引き続き第3章をやっていくぞ!