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

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

 

kdnakt.hatenablog.com

 

 

[第4回の様子]

2020/02/26に第4回を開催した。

 

参加メンバーは自分を含めて恐らく5人程度。もっといたかも。

というのも、今回は自分が在宅勤務で勉強会にリモートでの参加だった関係で、オフィス出社チームの参加人数の詳細がわからない(オフィスにカメラがなかったので)。リモート参加が自分ともう1人、そして少なくとも3人はオフィスにいた、はず。発言しないメンバーも入れるともう少しいた気がする。

みんな、もっと発言してくれ!

 

今回は2回「やったー」をする機会があり、自分ともう1人のリモート参加のメンバーはカメラでお互いの顔をみながら「やったー」をすることができた。オフィスでみんなでやるよりも、部屋で1人でやる方が、多少羞恥心は薄れる、かも。

 

内容としては、Learn Kotlin by Exampleの第2章 Control FlowのWhenとLoopを進めた。来週は引き続きControl FlowのRangesに進む予定。

 

やはり今週も「何事にも先達はあらまほしき事なり」を実感した。Kotlin経験者のおかげで、ビルトイン関数の存在をぐぐることなく確認できたし、ブラウザに表示されたコードを修正している時のエラーの解消もスムーズに進めることができた。

 

前回の反省を生かし、今回は自分はモブのドライバではなくナビゲータに徹して、Kotlin歴30分のドライバに無茶振りをするなどしていた(ドライバは華麗に実装してクリアしていた)。ただ、新規のドライバが1人しかいなかったのがやや残念。

みんな、もっと積極的にキーボード奪ってくれ!

 

[学んだことや疑問点]

  • When
    • switch-caseの代わりにwhenが使える
    • 式にも文にもなる、のでfun hoge(o:Any)Any=when(o) ...のような関数宣言が可能
    • whenの分岐は網羅的(exhaustive)でないとコンパイルエラーになる
    • あまりコンパイラが賢くないのでelseで網羅するのがほぼ必須
    • ただ、新しい仕様が議論されてはいる模様:

      https://youtrack.jetbrains.com/issue/KT-12380

    • Javaと違って1つ1つのケースにbreakを挟む必要はない
  • Loops
    • forループはJavaの拡張for文っぽくかける
    • かつ、変数の型宣言が不要(楽!
    • ここで無理やりif文を試してみた(ドライバお疲れさまでした)、if (cake == "cheese") { ... }で行けた
    • whileループとdo-whileループもある、これはまあ普通……
    • iterator演算子が登場した
    • 組み込みのListのiteratorを使い回すだけで例がよくわからなかった
    • 後で調べたらこんな感じでIteratorを実装できるっぽい。あまり使う機会ない気がするけど。

qiita.com

 

[まとめ]

今週から制御構文の章に突入した。

for/while/do-whileループ完全に理解した。

 

2月は目標通り4回勉強会を開催することができた。3月もやっていくぞ!