今週は記念すべき第30回を開催しました。
前回の様子はコチラ↓
[第30回の様子]
2020/09/09に第30回を開催した。
今週から時間帯を午後一に変更しての開催。
参加メンバーは自分をいれて6名。前回とは2、3人違うメンバーになっているので、継続的に2回に1回くらい参加してくれているメンバーが全部で10人くらいはいる感じである。そういえば今回は新しいメンバーの人も参加してくれた。ちょっと問題を解くのに夢中になりすぎて、あまり発言を促すようなことができなかったので反省している。
人数面では、なんだか8月後半くらいから大盛況が続いていて嬉しくもあり、ちょっとドキドキしている。
勉強会本編の内容としては、練習問題集Kotlin Koansの第3章 Collectionsをようやく終え、第4章 Propertiesに突入した。第3章のCompound Tasks
、Get used to new style
、それから第4章のProperties
の問題を1つ解いた。進捗は80%となり、前回比+7%。
[学んだことや疑問点]
- Compound Tasks
- Compoundってなんだろうと思ったがどうやら複合的とかそういうことらしい。
flatMap()
やmaxByOrNull()
など、これまで第3章で実践してきたものを組み合わせるということだろう。 - 最初は慣れなかった
flatMap()
を2連続で呼び出しても頭の中でスッと理解できるくらいにはキャッチアップできた。 - 要求されている仕様
- Get used to new style
- new styleってなんだ?と思ったら、どうやらJavaを書き直せといういつもの問題らしい。
- 最近ではもはや見慣れてしまったが、たしかに改めてJavaと比較するとKotlinはスッキリ書けてよい
- 問題自体は瞬殺。
- Properties
- 第26回の本勉強会で登場した
set
キーワードが再登場 - 前回は単純に
setter
の可視性をprivate set
として指定するだけだったが、今回はset(v) { ... }
の形式でsetter
を拡張すれば良さそうだと理解した - 本編の解説にあったとおり公式サイトのドキュメントを見て、
setter
の内部でセットするフィールドにアクセスする場合は、フィールド名を利用するのではなくfield
変数とする必要があると理解した - フィールド名を利用した場合どうなるのか?と試したところ、テストが通らなかったのでおそらく
setter
内でさらにsetter
が呼び出され、無限ループのようになってしまうこともわかった。
class PropertyExample() { var counter = 0 var propertyWithCounter: Int? = null set(v) { counter++ field = v // 下記スタイルで書くと代入時に再度このsetterが呼ばれ無限ループ // propertyWithCounter = v } }
[まとめ]
今回も引き続き練習問題集Kotlin Koansを進めた。
今回は3問解いて3回「やったー!」を実践できた!
来週も引き続き第4章をやっていくぞ!