今週は第17回を開催しました。
前回の様子はコチラ↓
[第17回の様子]
2020/06/10に第17回を開催した。
参加メンバーは自分を含めて4人。引き続き、みんな在宅勤務中なので、それぞれオンラインミーティングルームに参加する形式で実施。今日も自分はVR参加はせず、自粛期間中に伸びきった冬毛のまま素顔で参加。
勉強会本編の内容としては、Learn Kotlin by Exampleの第6章 Scope Functionnsのwith、applyの2節を進めた。
今回はすべての動作確認をLearn Kotlin by Exampleのサイト上で実行できた。
[学んだことや疑問点]
- with
- withは二つの引数をとる
- 最初の引数が
this扱いしたいオブジェクトで、2つ目の引数がそれを利用した関数 - だいたい前回学んだ
runやletと同じ気がする - 実験したところ、
runやlet同様、withも最終行で返り値を定義できる
class Configuration(var host: String, var port: Int)
fun main() {
val configuration = Configuration(host = "127.0.0.1", port = 9000)
var res = with(configuration) {
host
}
println(res) // 127.0.0.1
}
- nullableな値を
withで利用できないか、と思ったがうまくいかなかった - そうすると、nullableな値を扱える
runでいいじゃんと思ってしまう。どう違うんだろう。 - apply
- これはフィールドの初期化とかで使うらしい
- ためしに
withで初期化したら、実行できた。どう使い分ければいいんだ……applyの場合戻り値がオブジェクトだから、そのまま他の処理にメソッドチェーン的につなげたい場合とかだろうか。
class Configuration(var host: String, var port: Int)
fun main() {
val configuration = Configuration(host = "127.0.0.1", port = 9000)
with(configuration) {
port = "9001"
}
println("${configuration.port}") // 9001
}
[まとめ]
今回も、各節の最後に「やったー!」を実施できた。
次回も引き続きScope Functionsを学んでいくぞ!