Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
݄ौ୩+7. ᖒଠ!OHTX@UBSP ,PUMJO
Slide 2
Slide 2 text
+7.ݴޠʂ Նൃදʂ +FU#SBJOTʂ
Slide 3
Slide 3 text
੩తܕ͚ /6--҆શ ΦϒδΣΫτࢦ Ϋϩʔδϟ γϯϓϧ BMU+4
Slide 4
Slide 4 text
ࠓ͢͜ͱʂ ֦ுؔ /6--҆શ
Slide 5
Slide 5 text
֦ுؔ
Slide 6
Slide 6 text
fun main(args : Array) { "world".hello() / / => Hello, world! } ! fun String.hello() { println("Hello, ${this}!") }
Slide 7
Slide 7 text
/ / Kotlin fun String.hello() { println("Hello, ${this}!") } ! / / Java static void hello(String receiver) {...}
Slide 8
Slide 8 text
/6--҆શ
Slide 9
Slide 9 text
val a: String = null / / NG val b: String? = null / / OK /PU/VMM/VMMBCMF Λ໌֬ʹ۠ผ͢Δ
Slide 10
Slide 10 text
val a: String? = null a.toUpperCase() / / NG /VMMBCMFมʹ ී௨ʹΞΫηεͰ͖ͳ͍
Slide 11
Slide 11 text
val a: String? = null a?.toUpperCase() / / a.map(String::toUpperCase); Ͱ҆શݺͼग़͠ Ϩγʔό͕OVMMͳΒOVMMΛฦ͚ͩ͢
Slide 12
Slide 12 text
val a: String? = null a ?: "" / / a.orElse(""); ͰσϑΥϧτ
Slide 13
Slide 13 text
val a: String? = null a!! / / !!!Exception!!! / / a.get(); Ͱڧ੍/PU/VMMԽ ةݥʂݪଇېࢭʂ
Slide 14
Slide 14 text
֦ுؔ/6--҆શ
Slide 15
Slide 15 text
֦ுؔMFU͜ͳ͢ MFUඪ४ϥΠϒϥϦͷؔ w JG1SFTFOU w NBQ w qBU.BQ
Slide 16
Slide 16 text
w JG1SFTFOU w NBQ w qBU.BQ ,PUMJOʹWPJE ͳ͘ɺؔ ඞͣΛฦ͔͢ Βಉ͡ ֦ுؔMFU͜ͳ͢ MFUඪ४ϥΠϒϥϦͷؔ
Slide 17
Slide 17 text
w JG1SFTFOU w NBQ w qBU.BQ ʮOVMMͷOVMMʯͱ ͍͏ೖΕࢠߏʹ ͳΒͳ͍͔Βಉ͡ ֦ுؔMFU͜ͳ͢ MFUඪ४ϥΠϒϥϦͷؔ
Slide 18
Slide 18 text
a?.let { a -> toInt(a) } a?.let { toInt(it) } a?.let(::toInt) MFU༻ྫ ಉ͡ɻ ॻ͖ํ͕ҧ ͏͚ͩ
Slide 19
Slide 19 text
ෳͷ/VMMBCMFΛ /PU/VMMͱͯ͠ѻ͍͍ͨ
Slide 20
Slide 20 text
a?.let { a -> b?.let { b -> a - b } } ͭͷ*OU B CͷҾ͖ࢉ
Slide 21
Slide 21 text
a?.let { a -> b?.let { b -> a - b } } ͭͷ*OU B CͷҾ͖ࢉ ωετ ಡΈʹ͍͘
Slide 22
Slide 22 text
/ / Ҿ͖ࢉͷؔ ΧϦʔԽ val minus = fun(a: Int) = fun(b: Int) = a - b ! Ҿͱͯ͠/VMMBCMFͳؔΛऔΕΔMFUతͳͭ fun
A.bind(f: ((A) -> B)?): B? = f?.invoke(this) ͭͷؔΛ༻ҙ
Slide 23
Slide 23 text
b?.bind(a?.bind(minus)) ωετ͕ফ͑ͨʂ
Slide 24
Slide 24 text
ωετ͕ফ͑ͨʂ ׅހͷରԠؔͱ͔͆ BCͳͷʹɺొ͢Δॱং͕ٯɻ ಡΈʹ͍͘ʂ b?.bind(a?.bind(minus))
Slide 25
Slide 25 text
fun
((A)->B).apply(a: A?): B? = a?.bind(this) ͏Ұखؒ
Slide 26
Slide 26 text
minus.apply(a)?.apply(b) Ͱ͖ͨʂ NJOVT͔Βελʔτͯ͠ɺBɺC ͷॱͰهड़Ͱ͖Δʂ ϝιουνΣʔϯʹͳͬͯΔʂ
Slide 27
Slide 27 text
ෳࡶ ໘͍͘͞ val minus = fun(a: Int) = fun(b: Int) = a - b fun
A.bind(f: ((A) -> B)?): B? = f?.invoke(this) fun
((A)->B).apply(a: A?): B? = a?.bind(this)
Slide 28
Slide 28 text
if (a != null && b != null) a - b else null ࣮͜Ε͚ͩͰ͓̺
Slide 29
Slide 29 text
࣮͜Ε͚ͩͰ͓̺ OVMMͰͳ͍͜ͱ͕อূ͞ΕΔॴͰ /VMMBCMFมΛ/PU/VMMͱͯ͠ѻ͑Δ if (a != null && b != null) a - b else null
Slide 30
Slide 30 text
·ͱΊ ֦ுؔͰศརϝιου͕ੜͤΔʂ /6--҆શ҆શͰѻ͍ํ؆୯ʂ
Slide 31
Slide 31 text
ࣗݾհ ᖒଠ!OHTX@UBSP ͱ͕େ͖ͳΤϯδχΞ 4PGUXBSF%FTJHO ٕධ Ͱ ,PUMJOهࣄΛ࿈ࡌத
Slide 32
Slide 32 text
%SPJE,BJHJ ,PUMJO"OESPJE։ൃαϙʔτ ྗೖΕͯΔײ 1MVHJOϥΠϒϥϦͳͲ ͷ%SPJE,BJHJͰൃද͠·͢
Slide 33
Slide 33 text
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ -FU`TFOKPZ,PUMJO