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

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

 

kdnakt.hatenablog.com

 

 

[第5回の様子]

2020/03/04に第5回を開催した。

 

参加メンバーは自分を含めて恐らく10人程度。もっといたかも。

前回同様、今回も自分が在宅勤務で勉強会にリモートでの参加だった。そのため、オフィス出社チームの参加人数の詳細がわからない。少なくとも3人はオフィスにいた、はず。リモートの参加メンバーが自分含めて3人、それからオフィスにいるけどオンラインのみの参加メンバーが3人くらいいた、はず。

 

今回から新しく参加してくれたメンバーもいた。ちゃんとモブの「やったー」を、半ば強制的にではあるが、やってくれた。感謝。

おやすみだったメンバーが2人ほどいたので、累計12名は参加してくれていることになる。素敵。

 

そして、今回は前回と比べると発言するメンバーが増えた気がする。やったー!

 

内容としては、Learn Kotlin by Exampleの第2章 Control FlowのRangesを進めた。結構盛り上がったので、1ページしか進まなかったけれど、目標とする進度は特にないのでこれで良し。

次回は引き続きControl Flowを進めて、Equality Checksに進む予定。

 

[学んだことや疑問点]

  • Ranges
    • for (i in 0..3)のようにしてループを回せる
    • ただし0から3まで含めてなので、4周する
    • Java屋さんとしてはなんか違和感があったけど..inclusiveになるかどうかは言語によるらしい(Perl, PHPは仲間)

qiita.com

    • step nでnずつカウントアップしたり、downToでカウントダウンすることもできる
    • ここで議論になったのが、なぜdownToの反対のtoupto, upToではなく「..」なのか、という話題
    • Kotlinではtoはタプル(ペア)を作るのに利用する、upto, upToは定義されていない
"hoge" to "fuga"
// (hoge, fuga)

mapOf(
    "hoge" to "fuga",
    "foo" to "bar"
)
// {hoge=fuga, foo=bar}
    • (0..3).map({x -> x * 2})を省略して(0..3).map{ it * 2 }のように書ける
    • 'a'..'z'のようにcharでもRangesを利用できる
    • ただし「ひらがな」など日本語はUnicodeの問題で使いづらそう
for (c in 'あ'..'お') {
    print(c)
}
// あぃいぅうぇえぉお
    • if (x in 0..10) {}のようにif文にもRangesを利用できる(否定形は!in
    • if (x in y..10) {}のようにRangesで変数を利用することもできる
    • ここでif (x in 11..10) {}のように順序が逆転していてもコンパイルエラーにはならず単にfalse扱い
    • コンパイル時にこうした計算をさせようとするとめちゃくちゃコストがかかる、らしい

 

[まとめ]

引き続き、制御構文を学んでいる。

今週も先生が先取りして糖衣構文とか省略記法を解説してくれて助かった。

 

個人的にはこのくらいのペースでのんびりやればいいかな、と思っているけれど、参加しているメンバーはどうなんだろう?実際のアプリ開発とかをやりたいのだろうか。

次回聞いてみよう。