kdnakt blog

hello there.

会社でKotlin勉強会あらためKotlin dojo(第33回)を開催した

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

 

前回の様子はコチラ↓

kdnakt.hatenablog.com

 

 

[第33回の様子]

2020/09/30に第33回を開催した。

今回から、会社のカレンダーに登録されたイベント名を「Kotlin勉強会」から「Kotlin dojo」に変更した。特に深い意味はないけど。 

 

参加メンバーは自分をいれて4名。前回よりも1人多い、やったー!

 

勉強会本編の内容としては、今回から練習問題集Kotlin Koansの第5章 Buildersに突入、最初の問題Function literals with receiverを解いた。進捗は90%となり、前回比+2%。

いよいよ終わりが見えてきたな……。

 

[学んだことや疑問点]

  • Function literals with receiver
    • レシーバと言われると、自分の経験的にはGo言語を思い出したが、プログラミングの一般用語だと教えてもらった
    • 文法的には、val sum: Int.(Int) -> Int = { other -> plus(other) }またはval sum = fun Int.(other: Int): Int = this + otherのように宣言するらしい
    • 問題自体はサクッと解答して問題なく終了
    • 型.()の部分がなんともキモい、という話を参加者たちとひたすらしていた
    • あと2つめの文法に従うと=が2個出てくるのもなんかキモい気がするって話もした
  • 再びのNullable
    • あるメンバーの発案でNullableなFunction literals with receiverを作る、というのをやってみたがうまくいかなかった
    • 試したのは以下のコード
fun main() {
  val isEven: (Int.() -> Boolean)? = { this % 2 == 0 }
  println(2.isEven())
  // Error: Reference has a nullable type '(Int.() -> Boolean)?', use explicit '?.invoke()' to make a function-like call instead
}
    • エラーを解消するために、前回前々回の内容を参考に、2!!.isEven()とかいろいろ試してみたけれどうまくいかず。無念……

 

[まとめ]

今回も引き続き練習問題集Kotlin Koansを進めた。

今回も1回だけだけど、しっかり「やったー!」を実践できた!

後少しでKoansも終わりなので楽しく学んでいくぞ!!