Kotlinのリストのmap関数、自動生成されているって!

 Kotlinのリストのmap関数、自動生成されているって!

2018年8月25日(土)のKotlin FestのLT資料です!

F46c97bb74758d481531990654933050?s=128

RyotaMurohoshi

August 25, 2018
Tweet

Transcript

  1. Kotlinのリストのmap関数のコード 自動生成されてるって! @RyotaMurohoshi 2018/08/25(土) Kotlin Fest LT

  2. Kotlin 1.3にて 符号なし整数値型が登場予定! ※現状はまだExperimental

  3. ソースコードを覗いてみましょう! https://github.com/JetBrains/kotlin/tree/v1.3-M1/libraries/stdlib/unsigned/src/kotlin

  4. UInt

  5. UShort

  6. None
  7. ほぼ一緒じゃん! ※ ここチョイ笑いするとこですよ

  8. ところでちょっと気になるコメントに 気が付きましたか?

  9. UInt

  10. 拡大すると・・・

  11. ここ!!!

  12. 符号なし整数値型のコード 自動生成されてる! ※ ここ「へー」っていうことですよ!

  13. `kotlin/generators`ディレクトリの `builtins/generateBuiltIns.kt`をみてね! https://github.com/JetBrains/kotlin/blob/v1.3-M1/generators/builtins/arrayIterators.kt `ranges`や`iterator`も生成されているよ!

  14. ところで、Kotlinのstdlib・・・

  15. https://github.com/JetBrains/kotlin/tree/1.2.60/libraries/stdlib Standard LibraryのReadMeには・・・

  16. https://github.com/JetBrains/kotlin/tree/1.2.60/libraries/stdlib Standard LibraryのReadMeには・・・

  17. そう、stdlibにも自動生成されたコードが! ※ ここ「へー」っていうことですよ!

  18. どんなコードが自動生成されている? みんながよく使うアレも自動生成されている!

  19. これ!map拡張関数! みんなが大好きリストのmap関数!

  20. map拡張関数の実装も・・・? https://github.com/JetBrains/kotlin/blob/1.2.60/libraries/stdlib/common/src/generated/_Collections.kt#L1217

  21. こいつも自動生成!!! ※ ここみんなが大きな声で「へー」っていうことですよ!

  22. そう、mapもfilterも 実は、自動生成されているんです! ※ ここ”も”みんなが大きな声で「へー」っていうことですよ!

  23. kotlin/libraries/tools/kotlin-stdlib-gen https://github.com/JetBrains/kotlin/tree/v1.3-M1/libraries/tools/kotlin-stdlib-gen

  24. kotlin/libraries/tools/kotlin-stdlib-gen https://github.com/JetBrains/kotlin/tree/v1.3-M1/libraries/tools/kotlin-stdlib-gen Kotlinでのコード生成に興味があったら、読んでみて! @DslMarkerも利用した、コードジェネレータDSL! KDocも、DSLでいい感じに作っている!

  25. kotlin/libraries/tools/kotlin-stdlib-gen https://github.com/JetBrains/kotlin/tree/v1.3-M1/libraries/tools/kotlin-stdlib-gen • `src/generators/GenerateStandardLib.kt`がエントリポイント • `src/templates/dsl`以下に、DSLのためのクラス群がある • `src/templates`以下に、DSLを利用したメソッドを実際に生成するクラス群

  26. まとめ • Kotlinのコード、自動生成されているよ! • `kotlin/generators/builtins` • `kotlin/libraries/tools/kotlin-stdlib-gen` • stdlibのコード、DSLやコードジェネレーターの参考になるよ! •

    ドメインがKotlinだから、他の知識なしでも理解が!
  27. 詳しくはブログで!

  28. 2018/08/25(土) Kotlin Fest LT @RyotaMurohoshi リストのmap関数のコード 自動生成されてるって!

  29. 時間が余ったのでみなさん大きな声で 「へーーー!」 って言っください! リストのmap関数のコード 自動生成されてるって!

  30. Kotlinかわいい!