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

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

 

前回の様子はコチラ↓

kdnakt.hatenablog.com

 

 

[第15回の様子]

2020/05/27に第15回を開催した。

 

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

 

いつもどおり、30分間実施したかったのだが、自分を含めた3人のメンバーが、直前の時間まで1日がかりの研修に参加しておりスケジュールが遅延していたため、12分遅れでの開始となった。開始まで根気よく待っていてくれた2名の参加者にはあたまが上がらない。

 

勉強会本編の内容としては、Learn Kotlin by Exampleの第5章 CollectionsのsortedMap Element AccesszipgetOrElseの4節を進め、第5章を無事突破した。

 

今週も最後までLearn Kotlin by Exampleのサイト上でコードが実行できてよかった。

 

[学んだことや疑問点]

  • sorted
    • list.sorted()で昇順にソートされたリストが得られる
    • その場合に、元のlistは変更されない
    • sorted { ~ } のようにセレクタ関数を渡すと、その関数の返り値を基準にソートされた元の値のリストが返る
  • Map Element Access
    • 第3章のはじめにMapの節が出てきたときに説明が欲しかったやつ
    • Mapにはmap["key"]map.getValue("key")の2種類のアクセス方法がある
    • キーが存在しない場合、前者はnullを返す可能性があるが、getValueは例外を送出する
    • val newMap = map.withDefault { it }getValue時にデフォルト値を返すmapを作ることができる
    • ただし、newMap["nonExistentKey"]の場合はnullを返すので注意
  • zip
    • 2つのlistをzipすると、Pairのリストが返る
    • ただし、リスト内のデータの件数は元のリストの少ない方に合わせられる
    • 空のリストでzipした場合は空のリストになる
    • Pairを作るかわりに別のオブジェクトに変換することもできる
  • getOrElse
    • list.getOrElse(1) { 42 }のようにデフォルト値を定義する
    • map.withDefaultと似ているが違いがよくわからない...listでも使える、ということくらいか
    • map.getOrElseはキーが存在しても値がnullの場合にElseで定義された値を返す
val map = mutableMapOf<String, Int?>()
map["x"] = null
println(map.getOrElse("x") { 1 }) // 1が出力される

 

[まとめ]

今回も、各節の最後にきっちり「やったー!」を実施できた。やったー!

次回からはScope Functionsをやっていくぞ!