今週は第23回を開催しました。
前回の様子はコチラ↓
[第23回の様子]
2020/07/22に第23回を開催した。
参加メンバーは自分ともう1人で、2人きり。この勉強会始まって以来の少なさ。それでも毎週続けていけばきっとまた人がきてくれるはず……。
勉強会以外であまり話したことのない相手だったのでやや緊張しつつも、今回は私がドライバとなって問題を解いていった。前回のドライバも同じことを言っていたけれど、自分でやるとやはり普段使わない言語なので、意外と覚えていないなと感じた。週一でもいいから継続して、必要なときには自分で調べつつ実装できるようになればと思う。
勉強会本編の内容としては、 練習問題集Kotlin Koansの第1章 Introductionの後半、Smart casts
からExtensions on collections
までの5問を完了し、画面上での進捗は30%となった。前回比+12%。
今回も引き続き、Javaで書かれたコードをKotlinで書き直そう、という内容のものに加えて、Kotlin独自の実装方法や、Javaの標準ライブラリを利用する問題などがあった。
[学んだことや疑問点]
- Smart casts
- Extension functions
- 拡張関数、勉強会第10回で学んでいたがかなり前の話なので忘れていた。よい復習になった!
- が、そもそもRationalNumberってなんだっけ?となってしまいぐぐることに(有理数でした)。高校のころは覚えてたけどもう10年以上数学触ってないからな……。このサイトの問題、たまにこういうKotlinの知識とは関係ない部分を要求してきて辛い。
Pair<Int, Int>.r(): RationalNumber
を実装する際に、this.first
のようにしてプロパティにアクセスしていたが、回答を見てthis
を省略できることに気がついた。学び!- Object expressions
- 勉強会第9回で出てきたときは単にオブジェクトを作るやつ、のイメージだったが無名クラスを作るのと同じだと説明があって理解できた(気がする)
- Comparatorインターフェースを実装する無名クラスを作るわけだから、実装するメソッド名はcompareToだろうと思っていたらcompareだった。Comparableと間違えていた……無念。
- Comparatorを実装するとき、いつも正負をどう取れば昇順・降順になるのか間違える、という話をしたら(実際今回も最初は昇順に並べてしまった)、参加者からも同意が得られたてちょっと安心(安心してはいけない)。
- SAM conversions
- Extensions on collections
- 拡張関数を思い出したこともあって、Listに拡張関数を追加できるぜ!という話だと誤解して、下の画像のような無駄な実装をしてしまった(テストは通ったが)
- 実際には
List
に生えているsortedDescending()
メソッドを使ってみよう、というシンプルな問題だったorz 英語力……。
[まとめ]
今回も引き続き練習問題集Kotlin Koansを進めた。自分で手を動かしたのは初めてだったけど、たくさん正解できた。やったー!
来週もやっていくぞ!