@_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
Any, Unit, Nothing, void
The root of the Kotlin class hierarchy.
Every Kotlin class has [Any] as a superclass.
Any
Slide 28
Slide 28 text
Any, Unit, Nothing, void
log(2017)
fun log(any: Any) {
println("Value: $any")
}
fun log(i: Int) {
println("Value: $i”)
}
Slide 29
Slide 29 text
Any, Unit, Nothing, void
log(2017)
fun log(any: Any) {
println("Value: $any")
}
fun log(i: Int) {
println("Value: $i”)
}
Auto boxing
Slide 30
Slide 30 text
Any, Unit, Nothing, void
fun log(i: Int) {
println("Value: $i”)
}
Slide 31
Slide 31 text
Any, Unit, Nothing, void
fun log(any: Any) {
println("Value: $any")
}
Slide 32
Slide 32 text
Any, Unit, Nothing, void
Int String
Any
Slide 33
Slide 33 text
val hoge: Int? = 2017
log(hoge)
fun log(any: Any) {
println("Value: $any")
}
Any, Unit, Nothing, void
Slide 34
Slide 34 text
val hoge: Int? = 2017
log(hoge)
fun log(any: Any) {
println("Value: $any")
}
Any, Unit, Nothing, void
⇨ Compile Error
Slide 35
Slide 35 text
Any, Unit, Nothing, void
Any Nullable Type
Any?
Non-null Type
Slide 36
Slide 36 text
Any, Unit, Nothing, void
void
Unit
Nothing
Slide 37
Slide 37 text
Any, Unit, Nothing, void
void
Unit
Nothing ≠ ,
Slide 38
Slide 38 text
Any, Unit, Nothing, void
void
Unit
Slide 39
Slide 39 text
Any, Unit, Nothing, void
Unit
The type with only one value: the Unit object.
This type corresponds to the `void` type in Java.
Slide 40
Slide 40 text
Any, Unit, Nothing, void
void
Unit
⇨ 意味のない値を返す
=
Slide 41
Slide 41 text
Any, 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
Slide 42
Slide 42 text
Any, Unit, Nothing, void
Nothing
⇨ 存在しないを表す, 値は返さない
Slide 43
Slide 43 text
Any, Unit, Nothing, void
val foo = if (bar) {
123
} else {
fail()
}
fun fail() {
throw IllegalStateException()
}
Slide 44
Slide 44 text
Any, Unit, Nothing, void
val foo = if (bar) {
123
} else {
fail()
}
fun fail(): Unit {
throw IllegalStateException()
}
Slide 45
Slide 45 text
Any, Unit, Nothing, void
val foo = if (bar) {
123
} else {
fail()
}
fun fail(): Unit {
throw IllegalStateException()
}
Slide 46
Slide 46 text
Any, Unit, Nothing, void
val foo = if (bar) {
123
} else {
fail()
}
fun fail(): Unit {
throw IllegalStateException()
}
Int
Unit
Slide 47
Slide 47 text
Any, Unit, Nothing, void
Int Unit
Any
Slide 48
Slide 48 text
Any, Unit, Nothing, void
val foo: Any = if (bar) {
123
} else {
fail()
}
fun fail(): Unit {
throw IllegalStateException()
}
Slide 49
Slide 49 text
Any, Unit, Nothing, void
val foo: Any = if (bar) {
123
} else {
fail()
}
fun fail(): Unit {
throw IllegalStateException()
}
⇨ fooはInt型にしたい
Slide 50
Slide 50 text
Any, Unit, Nothing, void
val foo = if (bar) {
123
} else {
fail()
}
fun fail(): Nothing {
throw IllegalStateException()
}
Slide 51
Slide 51 text
Any, Unit, Nothing, void
val foo = if (bar) {
123
} else {
fail()
}
fun fail(): Nothing {
throw IllegalStateException()
}
Int
Nothing
Slide 52
Slide 52 text
Any, Unit, Nothing, void
Int Unit
Any
Nothing
Slide 53
Slide 53 text
Any, Unit, Nothing, void
val foo: Int = if (bar) {
123
} else {
fail()
}
fun fail(): Nothing {
throw IllegalStateException()
}
Slide 54
Slide 54 text
Any, Unit, Nothing, void
val foo: Int = if (bar) {
123
} else {
fail()
}
fun fail(): Nothing {
throw IllegalStateException()
}
Slide 55
Slide 55 text
Nothing?
Any, Unit, Nothing, void
Slide 56
Slide 56 text
Any, Unit, Nothing, void
Int Unit
Any
Nothing
Slide 57
Slide 57 text
Any, Unit, Nothing, void
Non-null Type
Any
Nothing
Non-null Type
Slide 58
Slide 58 text
Any, Unit, Nothing, void
Any
Any?
Non-null Type
Nothing
Slide 59
Slide 59 text
Any, Unit, Nothing, void
Any Nullable Type
Any?
Non-null Type
Nothing
Slide 60
Slide 60 text
Any, Unit, Nothing, void
Any Nullable Type
Any?
Non-null Type Nothing?
Nothing
Slide 61
Slide 61 text
Collections
Slide 62
Slide 62 text
Collections
kotlin.MutableList
kotlin.List
Slide 63
Slide 63 text
Collections
val mutableList = mutableListOf(1, 2, 3)
val list: List = mutableList
println(list) // [1, 2, 3]
Slide 64
Slide 64 text
Collections
val mutableList = mutableListOf(1, 2, 3)
val list: List = mutableList
println(list) // [1, 2, 3]
mutableList.add(4)
println(list)
Slide 65
Slide 65 text
Collections
val mutableList = mutableListOf(1, 2, 3)
val list: List = mutableList
println(list) // [1, 2, 3]
mutableList.add(4)
println(list) // [1, 2, 3, 4]
Collections
fun foo(): List = listOf(1)
fun bar(): MutableList = mutableListOf(1)
⇨ Decompile
Slide 68
Slide 68 text
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)});
}
Slide 69
Slide 69 text
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)});
}