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

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

 

前回の様子はコチラ↓

kdnakt.hatenablog.com

 

 

[第11回の様子]

2020/04/15に第11回を開催した。

 

参加メンバーは自分を含めて6、7人。引き続き、みんな在宅勤務中なので、それぞれオンラインミーティングルームに参加する形式で実施した。

 

大体のメンバーがドライバを経験したので、今回は2周目に突入。途中、ドライバの家族の方が乱入してくるなどあったが、スムーズに進めることができた。

内容としては、Learn Kotlin by Exampleの第5章 CollectionsのSetとMapを進めた。いつも通り、2節コンスタントに進められている。

 

今回はちょっと準備が足りずVR参加しなかったのだが、前回初参加だったメンバーが今度はFacerigを利用してVR参加してくれた。これだけのためにWindowsマシン買おうか悩む。

 

今週も時折サイト本体の調子が悪く、コードを動かせないタイミングがあったので、一部動作確認にはPaizaにお世話になった。

paiza.io

 

[学んだことや疑問点]

  • Set
    • 大体JavaのSetと同じっぽい
    • MutableSet型の変数をSet型にキャストするとread-onlyにできるのは先週やったListと大体同じ
    • Set型にしてadd()したらどうなるのかと思ったらコンパイルエラーになった(error: unresolved reference: add)
  • Map
    • MapとMutableMapがあるのはListやSetと同じ
    • 第1回の勉強会で出てきたinfix functions(to)が再来。やはり分かりにくいと不評。
    • そういえばあまり説明がなかった気がするけど、valでかつconstを書いてる。これはどういう意味なんだろうか……
    • key value型でvalueを取得する方法は3通りある
      • get(key)[key]はキーが見つからない場合、nullを返す
      • getValue(key)はキーが見つからない場合、例外を送出する(java.util.NoSuchElementException
    • nullを返すのでMyMap[key] += myIntのような書き方はエラーになる(error: operator call corresponds to a dot-qualified call 'MyMap[key].plusAssign(myInt)' which is not allowed on a nullable receiver)
    • Lambdα式を書く時に高階関数の()が省略できるの若干気持ち悪いと思ってたけどこのforEachの書き方はしっくり来た
MyMap.forEach {
    k, v -> println("key $k: value $v")
}

 

[まとめ]

今回は、しばらくなおざりになっていたモブの重要アクション「やったー!」を実施できた。やったー!

来週もひたすらCollectionの続きをやるぞ!