$30 off During Our Annual Pro Sale. View Details »

Kotlin Dynamic type

coe
September 26, 2023

Kotlin Dynamic type

集まれSwift好き!Swift愛好会 vol.77 @ DeNA
2023/09/26

coe

September 26, 2023
Tweet

More Decks by coe

Other Decks in Technology

Transcript

  1. ೔޲ڧ೥݄೔
    %ZOBNJDUZQF
    ू·Ε4XJGU޷͖ʂ4XJGUѪ޷ձWPM
    ू·Ε,PUMJO޷͖ʂ,PUMJOѪ޷ձWPM!%F/"

    View Slide

  2. w ೔޲ڧ
    w J04ΤϯδχΞ

    View Slide

  3. %ZOBNJDUZQF

    View Slide

  4. w ೔޲ڧ
    w J04Τ
    ϯδχ
    Ξ

    View Slide

  5. %ZOBNJD
    UZQF

    View Slide

  6. fun dynamicFun(x: dynamic): Unit {
    val dyn: dynamic = ...
    }
    ,PUMJO%ZOBNJDUZQF

    View Slide

  7. %ZOBNJDUZQF

    View Slide

  8. %ZOBNJDUZQF
    w EZOBNJDܕ
    w WBMEZOEZOBNJDʜ
    w ͳΜͰ΋ೖΔ

    View Slide

  9. fun dynamicFun(x: dynamic): Unit {
    }

    View Slide

  10. fun dynamicFun(x: dynamic): Unit {
    }
    fun anyFun(x: Any): Unit {
    }

    View Slide

  11. fun dynamicFun(x: dynamic): Unit {
    x.god
    }
    fun anyFun(x: Any): Unit {
    x.god // ←ίϯύΠϧΤϥʔ
    }

    View Slide

  12. %ZOBNJDUZQF
    w EZOBNJDܕ
    w WBMEZOEZOBNJDʜ
    w ͳΜͰ΋ೖΔ
    w ܕνΣοΫΛߦΘͳ͍ʢίϯύΠϧΤϥʔʹͳΒͳ͍ʣ

    View Slide

  13. // x͸Human
    fun dynamicFun(x: dynamic): Unit {
    x.back.left.left.up.scratch()
    }
    class Back {
    val left: Back
    get() = Back()
    val right: Back
    get() = Back()
    val up: Back
    get() = Back()
    val down: Back
    get() = Back()
    fun scratch(): Unit {
    println(“ຬ଍ʂ”)
    }
    }
    class Human {
    val back = Back()
    }

    View Slide

  14. %ZOBNJDUZQF
    w EZOBNJDܕ
    w WBMEZOEZOBNJDʜ
    w ͳΜͰ΋ೖΔ
    w ܕνΣοΫΛߦΘͳ͍ʢίϯύΠϧΤϥʔʹͳΒͳ͍ʣ
    w ࣗ༝ʹϓϩύςΟ΍ؔ਺Λݺ΂Δ
    w EZOBNJDܕͷϓϩύςΟ΍ؔ਺ͷϦλʔϯ͸EZOBNJDܕ

    View Slide

  15. fun dynamicPlus(x: dynamic, y: dynamic): Unit {
    x + y
    }

    View Slide

  16. fun dynamicPlus(x: dynamic, y: dynamic): Unit {
    x + y // 3
    }
    dynamicPlus(1, 2)

    View Slide

  17. fun dynamicPlus(x: dynamic, y: dynamic): Unit {
    x + y // ೔޲ڧ
    }
    dynamicPlus(“೔޲”, “ڧ”)

    View Slide

  18. fun dynamicPlus(x: dynamic, y: dynamic): Unit {
    x + y // iOSΤϯδχΞ
    }
    dynamicPlus(“iOS”, “ΤϯδχΞ”)

    View Slide

  19. fun dynamicPlus(x: dynamic, y: dynamic): Unit {
    x + y // 105ΤϯδχΞ
    }
    dynamicPlus(105, “ΤϯδχΞ”)

    View Slide

  20. %ZOBNJDUZQF
    w EZOBNJDܕ
    w WBMEZOEZOBNJDʜ
    w ͳΜͰ΋ೖΔ
    w ܕνΣοΫ͸ߦΘͳ͍ʢίϯύΠϧΤϥʔʹͳΒͳ͍ʣ
    w ࣗ༝ʹϓϩύςΟ΍ؔ਺Λݺ΂Δ
    w EZOBNJDܕͷϓϩύςΟ͸EZOBNJDܕ
    w EZOBNJDಉ࢜ͷܭࢉ΋Մೳ

    View Slide

  21. ͍͢͝ʂ

    View Slide

  22. ͸͡ΊΑ͏

    View Slide

  23. ,PUMJO+4

    View Slide

  24. IUUQTLPUMJOMBOHPSHEPDTEZOBNJDUZQFIUNM
    %ZOBNJDUZQF

    View Slide

  25. View Slide