2017_11_14_Kotlin_Conf_Report_Kotlin_Types

Daec7e5cd5fae384eda88037d937343b?s=47 AAkira
November 14, 2017

 2017_11_14_Kotlin_Conf_Report_Kotlin_Types

CA.kt #4 Kotlin Conf Report
Kotlin Types
This presentation based on Kotlin Exposed Type by Svetlana Isakova in Kotlin Conf 2017.

https://cyberagent.connpass.com/event/70423/

Daec7e5cd5fae384eda88037d937343b?s=128

AAkira

November 14, 2017
Tweet

Transcript

  1. 2.

    @_a_akira AAkira CyberAgent, Inc. Akira Aratani private lateinit var aakira

    : User data class User(val name: String, val twitterId: String, val githubId: String, val company: String) print("Name : ${aakira.name}”) println("Github Id : ${aakira.githubId}") print("Twitter Id : ${aakira.twitterId}") println("Company : ${aakira.company}") $ whois
  2. 4.

    私とKotlin M1 2012-04-12 M11 2015-03-19 M14 2015-10-01 1.0-beta4 2015-12-22 M13

    2015-09-16 1.0 2016-02-16 1.0-RC 2016-02-04 2016-01-21 Release 2015-04 開発開始 kotlin FRESH 1.1 2017-03-01 2017-05-15 Renewal
  3. 5.
  4. 6.
  5. 8.
  6. 10.

    Agenda • Basic types • Nullable types • Collection types

    • Kotlin/Java types • Unit, Nothing, void • Collections →
  7. 14.

    Kotlin, Java Types public static final int foo() { return

    1; } @Nullable public static final Integer bar() { return Integer.valueOf(1); }
  8. 15.

    Kotlin, Java Types public static final int foo() { return

    1; } @Nullable public static final Integer bar() { return Integer.valueOf(1); }
  9. 17.
  10. 29.

    Unit, Nothing, void Unit The type with only one value:

    the Unit object. This type corresponds to the `void` type in Java.
  11. 31.

    Unit, Nothing, void Nothing has no instances. You can use

    Nothing to represent "a value that never exists”: for example, if a function has the return type of Nothing,
 it means that it never returns (always throws an exception). Nothing
  12. 33.

    Unit, Nothing, void val foo = if (bar) { 123

    } else { fail() } fun fail() { throw IllegalStateException() }
  13. 34.

    Unit, Nothing, void val foo = if (bar) { 123

    } else { fail() } fun fail(): Unit { throw IllegalStateException() }
  14. 35.

    Unit, Nothing, void val foo = if (bar) { 123

    } else { fail() } fun fail(): Unit { throw IllegalStateException() }
  15. 36.

    Unit, Nothing, void val foo = if (bar) { 123

    } else { fail() } fun fail(): Unit { throw IllegalStateException() } Int Unit
  16. 38.

    Unit, Nothing, void val foo: Any = if (bar) {

    123 } else { fail() } fun fail(): Unit { throw IllegalStateException() }
  17. 40.

    Unit, Nothing, void val foo: Any = if (bar) {

    123 } else { fail() } fun fail(): Unit { throw IllegalStateException() } ⇨ fooはInt型にしたい
  18. 41.

    Unit, Nothing, void val foo = if (bar) { 123

    } else { fail() } fun fail(): Nothing { throw IllegalStateException() }
  19. 42.

    Unit, Nothing, void val foo = if (bar) { 123

    } else { fail() } fun fail(): Nothing { throw IllegalStateException() } Int Nothing
  20. 44.

    Unit, Nothing, void val foo: Int = if (bar) {

    123 } else { fail() } fun fail(): Nothing { throw IllegalStateException() }
  21. 45.

    Unit, Nothing, void val foo: Int = if (bar) {

    123 } else { fail() } fun fail(): Nothing { throw IllegalStateException() }
  22. 49.

    Collections val mutableList = mutableListOf(1, 2, 3) val list: List<Int>

    = mutableList println(list) // [1, 2, 3] mutableList.add(4) println(list)
  23. 50.

    Collections val mutableList = mutableListOf(1, 2, 3) val list: List<Int>

    = mutableList println(list) // [1, 2, 3] mutableList.add(4) println(list) // [1, 2, 3, 4]
  24. 53.

    Collections @NotNull public static final List foo() { return CollectionsKt.listOf(Integer.valueOf(1));

    } @NotNull public static final List bar() { return CollectionsKt.mutableListOf(
 new Integer[]{Integer.valueOf(1)}); }
  25. 54.

    Collections @NotNull public static final List foo() { return CollectionsKt.listOf(Integer.valueOf(1));

    } @NotNull public static final List bar() { return CollectionsKt.mutableListOf(
 new Integer[]{Integer.valueOf(1)}); }
  26. 56.
  27. 57.