Android TVとXamarinとKotlin

Android TVとXamarinとKotlin

1fe26e11357f3ba7250b6668ca61309f?s=128

Mayuki Sawatari

January 21, 2017
Tweet

Transcript

  1. 1.
  2. 4.
  3. 10.
  4. 11.
  5. 12.
  6. 13.
  7. 14.
  8. 15.
  9. 16.
  10. 17.
  11. 18.
  12. 19.
  13. 20.
  14. 21.
  15. 24.
  16. 25.
  17. 26.
  18. 28.
  19. 29.
  20. 31.
  21. 32.
  22. 33.
  23. 34.
  24. 35.
  25. 38.

    ( )

  26. 39.
  27. 42.

    class Greeter(val message: String) { private val prefix = "Hello!"

    fun hello() { println("$prefix $message") } } class Program { fun main() { Greeter("Konnichiwa!").hello() // => Konnichiwa! } }
  28. 43.

    // 再代入不可 (プロパティも同じ) val valueA = "Hello" valueA = "Konnichiwa!"

    // Compile Error: Val cannot reassigned var valueB = "Hello" valueB = "Konnichiwa!" // OK // null許容 var valueNullable: String? = "Hogehoge" valueNullable = null // null非許容 var valueNonNullable = "Mogemoge" valueNonNullable = null // Error: Null can not be a value of a non-null type String
  29. 44.

    C# class NanikaData(val valueA: String, val valueB: Int) { }

    NanikaData("Hoge", 1).valueA // => Hoge
  30. 45.

    (0..10) // ラムダ式のデフォルト引数 it .map({ it * 2 }) //

    カッコ不要 .filter { it > 5 } // 引数に名前を付ける .forEach { i -> println(i) }
  31. 46.

    val value = NantokaType.ARIENAI // when, if val message =

    when (value) { NantokaType.SUGOI -> "Sugoi" NantokaType.YABAI -> "Yabai" else -> "Majikayo" } println(message) // => "Majikayo" enum class NantokaType { SUGOI, YABAI, ARIENAI }
  32. 47.

    var valueA: String? = "nantoka" // この時点では null かもしれないので ?.

    または !! が必要 valueA?.substring(0, 3) if (valueA == null) { return } // ここに来れば null ではないと判断され null-safe/non-null assert 不要 valueA.substring(0, 3)
  33. 48.

    val valueB: Any = "Nantoka" // Any == Object if

    (valueB is String) { valueB.substring(0, 3) // 値が String だと判断できる } valueB.substring // Compile Errorで呼べない TypeScript
  34. 49.

    interface BaseA { fun hoge() } interface BaseB { fun

    moge() } class BaseAImpl : BaseA { override fun hoge() = println(“BaseA”) } class BaseBImpl : BaseB { override fun moge() = println(“BaseB”) } class AAndBImpl(b: BaseB) : BaseA by BaseAImpl(), BaseB by b { // BaseAの実装BaseAImpl, BaseBはb // mix-in } class NantokaKantoka { fun methodA() { AAndBImpl(BaseBImpl()).hoge() // => BaseA AAndBImpl(BaseBImpl()).moge() // => BaseB } }
  35. 51.
  36. 52.
  37. 54.

    IDE

  38. 56.
  39. 57.
  40. 58.

    C#

  41. 59.