Slide 1

Slide 1 text

0QUJPOBMܕօ఻ ˋ➬穈׫ה嚊䙀ד椚鍑ׅ׷0QUJPOBM㘗ˋ hUPVZPV

Slide 2

Slide 2 text

瑱搫דָׅ㉏겗דׅկ

Slide 3

Slide 3 text

⟃♴ך״ֲז儗ծ֮ז׋ז׵וֲ剅ֹתַׅ ˖ B*OU ָ֮׷הֹծBך⦼׾✳⛦׃׋ְկ׋׌׃ծBָOJMך㜥さכOJM׾䖤׋ְկ ˖ BSSBZ<*OU> ָ֮׷הֹծBSSBZך剑ⴱך銲稆׾《䖤׃׋ְկ׋׌׃ծBSSBZָOJMַծ 剑ⴱך銲稆ָ㶷㖈׃זְ"SSBZָ瑞ך㜥さכOJM׾䖤׋ְկؼٝز<*OU>כSTU *OU הְֲفٗػذ؍׾䭯אկSTUכ剑ⴱך銲稆ָ㶷㖈׃זְ㜥さכOJM׾鵤ׅկ ˖ Y%PVCMF ָ֮׷הֹծYך䎂倯呎׾鎘皾׃׋ְկ׋׌׃ծYָOJMת׋כ頾ך侧ך㜥 さכOJM׾䖤׋ְկזֶծTRSU׾㸜Ⰻח׃׋頾ך侧׾床ׅהOJM׾鵤ׅꟼ侧 TBGF4RSU%PVCMF%PVCMF ָ֮׷׮ךה׃ג罋ִג葺ְկ ˖ B*OU הC*OU ָ֮׷הֹծBC׾鎘皾׃׋ְկ׋׌׃ծBַCָOJMך㜥さחכ OJM׾䖤׋ְկ

Slide 4

Slide 4 text

걧ך晙ꥎד 罋ִגְֶגֻ׌ְׁկ

Slide 5

Slide 5 text

0QUJPOBM㘗׏ג ˖ )PHFכOJMָⰅ׵זְ ˖ )PHFכ剑ⴱ׌ֽOJMָⰅ׷ ˖ )PHF כOJMד׮)PHF㘗ך⦼ד׮⟣䠐ךة؎ىؚٝדⰅ׷

Slide 6

Slide 6 text

ֿ׸ָ♧菙涸ז铡僇דׅկ

Slide 7

Slide 7 text

דָׅծ׫זׁ׿

Slide 8

Slide 8 text

׉׸׌ֽד0QUJPOBM㘗ָ ⴓַ׏׋ה劤䔲ח䙼׏גתַׅ

Slide 9

Slide 9 text

׉׸׌ֽד0QUJPOBM㘗׾ ⢪ְֿזׇגְ׷ה 劤䔲ח䙼׏גתַׅ

Slide 10

Slide 10 text

չכְպה瘶ִ׋׉ֿך֮ז׋

Slide 11

Slide 11 text

欥ְ

Slide 12

Slide 12 text

欥ֺׅ׷

Slide 13

Slide 13 text

0QUJPOBM㘗ծ噰׭ת׃׳

Slide 14

Slide 14 text

0QUJPOBM㘗׾噰׭׸לֿ׿זֿהװ ˟ؿ؍ؙءّٝדׅկh傈劤ذٖؽ

Slide 15

Slide 15 text

ֿ׿זֿה׌׏ג ˟׮׍׹׿ؿ؍ؙءّٝדׅկh8BSOFS#SPT&OUFSUBJONFOU *OD

Slide 16

Slide 16 text

׮׍׹׿דֹתׇ׿ָ˘

Slide 17

Slide 17 text

החְַֻ׹ְ׹דֹ׷׿דׅ

Slide 18

Slide 18 text

⵸縧ָֹꞿֻז׶ת׃׋կ כׄ׭תׅկ ΍劤颵涸ח0QUJPOBM㘗׏ג

Slide 19

Slide 19 text

Ұɺ0QUJPOBMܕ͸ϞφυͰ͋Δ

Slide 20

Slide 20 text

ְװְװ׉׸⟃⵸חٌشس׏גז׿װי׿ ˖ ֮׷岀⵱ח䖞׏ג㹋鄲ׁ׸׋
 խBU.BQ׾䭯א㘗 ˖ ⯋ղꟼ侧㘗فؚٗٓىؚٝח
 խ״ֻ⢪׻׸׷嚊䙀 ˖ ז׿׌ַ䬄韋涸ד
 խ״ֻ׻ַ׵זְֽו⤑ⵃ

Slide 21

Slide 21 text

ٌشسחאְג4XJGUד铡僇׃ג׫׋ ˖ הְֲ鎸✲ָ2JJUBח֮׶תׅկ鑫׃ֻכ׉׍׵⿫撑 ˖ 'PP5ָ如ך勴⟝׾弫׋ׅ儗ٌشسהㄎע ˖ ⴱ劍⻉ꟼ侧ָ֮׷ ˖ BU.BQהְֲًاحس׾׮א ˖ ٌشس⵱׾弫׋ׅ ˖ ؿ؋ؙٝة٦ד֮׷

Slide 22

Slide 22 text

ٌشس⵱ ˖ 'PP Y BU.BQ G G Y ˖ GPPBU.BQ\'PP ^GPP ˖ GPPBU.BQ\G BU.BQ H ^GPPBU.BQ G BU.BQ H

Slide 23

Slide 23 text

ؿ؋ؙٝة٦ ˖ NBQהְֲًاحس׾׮א ˖ ؿ؋ؙٝة٦⵱׾弫׋ׅ ˖ 䛎瘝ꟼ侧JEחꟼ׃גGPPNBQ JE JE GPP ˖ GPPNBQ\H G ^GPPNBQ G NBQ H

Slide 24

Slide 24 text

זחָ鎉ְ׋ְַה鎉ֲה)BTLFMM׾㷕ןת׃׳ֲկ暴חչׅ׀ְ)BTLFMM׋ך׃ֻ㷕רֲպ כ鸐獥չׅ׀ְ)劤պהㄎל׸גֶ׶ٌشسזוָ♨㻝ח鍑铡ׁ׸גְ׷הְֲֿהד剣せז 劤דׅկ薉铂晛ד֮׸לطحزד搀俱ד铣׬ֿה׮דֹתׅկ㹋ꥷךהֿ׹⬁כת׌铣׫ⴖ׏ גְזְךדָׅ׌ַ׵ٌشس׮׉ֿתד椚鍑׃גְ׷׻ֽדכזְךדָׅꟼ侧㘗鎉铂 ׾㷕עהְֲֿהכ4XJGUדꟼ侧㘗鎉铂׏שְ㹋鄲׮⢪ִ׷״ֲחז׷הְֲֿהד֮׏גծ׉ ׸ח״׏ג➙תד撕꧟׌׏׋Ⳣ椚ָ知患ח剅ֽ׋׶׃תׅկזח״׶3Y4XJGUזוד䪔׻׸גְ ׷׮ךכ'VODUJPOBM3FBDUJWF1SPHSBNNJOH鸐獥'31הㄎל׸גֶ׶ꟼ侧㘗鎉铂ך暴 䗙׾㢳ֻ《׶Ⰵ׸גְתׅկת׋4XJGUחכ0QUJPOBM㘗⟃㢩ח׮׍׳ֻ׍׳ֻٌشسחז׏ג ְ׷㘗ָ㶷㖈ׅ׷׋׭ֿ׸׵׾⹈䓼ׅ׷ֿהכ4XJGUד״׶ٖكٕך넝ְ㹋鄲ָדֹ׷הְֲ 挿דהג׮䕵ח׋אךדכזְד׃׳ֲַկꞿղה铂׶ת׃׋ָאת׶זחָ鎉ְ׋ְַהְ ֲה4XJGU⟃㢩ך暴חַֽꨄ׸׋فؚٗٓىؚٝ鎉铂׾㷕עהְֲֿהכ圫ղז鋔挿׾《׶Ⰵ ׸׷הְֲ挿דꬊ䌢ח剣⸬ז⹈䓼倯岀׌הְֲֿהדׅկ➙㔐ך闌䏟הꟼ侧㘗鎉铂ך濼陎ָ֮ ׸ל뇪חꆃ啎ծ僇傈ַ׵0QUJPOBM㘗׾⢪ֲו׿ז撕꧟זⳢ椚ח甧׍ぢֲַֿהחז׏׋ה׃ג ׮֮ז׋ז׵ׅץג荈⸂ד螟뜧ח鍑寸דֹ׷״ֲחז׷כ׆דׅկ-FUˏT0QUJPOBM-FUˏT4XJGU ׍ׯ׿ה椚鍑׃׋ְ➂כ
 ꟼ侧㘗鎉铂׾㷕רֲ

Slide 25

Slide 25 text

את׶

Slide 26

Slide 26 text

Ұɺ0QUJPOBMܕ͸ϞφυͰ͋Δ

Slide 27

Slide 27 text

Ұɺ0QUJPOBMܕ͸NBQͱqBU.BQ ͱ͍͏ϝιουΛ͍࣋ͬͯΔ

Slide 28

Slide 28 text

Ұɺ0QUJPOBMܕ͸ 0QUJPOBM5ͱఆٛ͞ΕΔܕͰ͋Δ

Slide 29

Slide 29 text

͑"SSBZ5ה⡂׋״ֲז㶷㖈

Slide 30

Slide 30 text

את׶ծ*OU ה*OUכ 㸣Ⰻח麩ֲ׮ך

Slide 31

Slide 31 text

*OU 0QUJPOBM*OU

Slide 32

Slide 32 text

*OU 0QUJPOBM0QUJPOBM*OU

Slide 33

Slide 33 text

0QUJPOBM5כ 銲稆ָ♧⦐׃ַⰅ׵זְ盲ד֮׷

Slide 34

Slide 34 text

0QUJPOBM㘗ך㹋鄲♧鿇 public enum Optional : ExpressibleByNilLiteral { case none case some(Wrapped) }

Slide 35

Slide 35 text

Ұɺ0QUJPOBMܕ͸ FYUFOTJPOͰ֦ுͰ͖Δ

Slide 36

Slide 36 text

䭁䓸ך⢽ extension Optional { public func reduce(_ initial: U, combine: (U, Wrapped) -> U) -> U { switch self { case .none: return initial case .some(let value): return combine(initial, value) } } public func filter(_ includeElement: @escaping (Wrapped) -> Bool) -> Wrapped? { return flatMap { includeElement($0) ? $0 : nil } } public func forEach(_ action: (Wrapped) -> ()) { reduce(()) { action($1) } } }

Slide 37

Slide 37 text

Ύ㉏겗׾鍑ְג׫״ֲ

Slide 38

Slide 38 text

⟃♴ך״ֲז儗ծ֮ז׋ז׵וֲ剅ֹתַׅ ˖ B*OU ָ֮׷הֹծBך⦼׾✳⛦׃׋ְկ׋׌׃ծBָOJMך㜥さכOJM׾䖤׋ְկ ˖ BSSBZ<*OU> ָ֮׷הֹծBSSBZך剑ⴱך銲稆׾《䖤׃׋ְկ׋׌׃ծBSSBZָOJMַծ 剑ⴱך銲稆ָ㶷㖈׃זְ"SSBZָ瑞ך㜥さכOJM׾䖤׋ְկؼٝز<*OU>כSTU *OU הְֲفٗػذ؍׾䭯אկSTUכ剑ⴱך銲稆ָ㶷㖈׃זְ㜥さכOJM׾鵤ׅկ ˖ Y%PVCMF ָ֮׷הֹծYך䎂倯呎׾鎘皾׃׋ְկ׋׌׃ծYָOJMת׋כ頾ך侧ך㜥 さכOJM׾䖤׋ְկזֶծTRSU׾㸜Ⰻח׃׋頾ך侧׾床ׅהOJM׾鵤ׅꟼ侧 TBGF4RSU%PVCMF%PVCMF ָ֮׷׮ךה׃ג罋ִג葺ְկ ˖ B*OU הC*OU ָ֮׷הֹծBC׾鎘皾׃׋ְկ׋׌׃ծBַCָOJMך㜥さחכ OJM׾䖤׋ְկ

Slide 39

Slide 39 text

B*OU ָ֮׷הֹծBך⦼׾✳⛦׃׋ְկ ׋׌׃ծBָOJMך㜥さכOJM׾䖤׋ְկ

Slide 40

Slide 40 text

♧菙涸鍑瘶 // 1൪ var result: Int? if let a0 = a { result = a0 * a0 } else { result = nil } // or result = a == nil ? nil : a! * a!

Slide 41

Slide 41 text

㸜Ⰻַא知患ז鍑瘶 // simple answer result = a.map { $0 * $0 }

Slide 42

Slide 42 text

BSSBZ<*OU> ָ֮׷הֹծBSSBZך剑ⴱך銲稆׾《䖤׃׋ְկ׋ ׌׃ծBSSBZָOJMַծ剑ⴱך銲稆ָ㶷㖈׃זְ"SSBZָ瑞ך 㜥さכOJM׾䖤׋ְկؼٝز<*OU>כSTU*OU הְֲفٗػ ذ؍׾䭯אկSTUכ剑ⴱך銲稆ָ㶷㖈׃זְ㜥さכOJM׾鵤ׅկ

Slide 43

Slide 43 text

♧菙涸鍑瘶 // 2൪ if let array0 = array { if let first = array0.first { result = first } else { result = nil } } else { result = nil } // Int??ʹͳΔ͚Ͳ... var result2: Int?? = array.map { $0.first }

Slide 44

Slide 44 text

㸜Ⰻַא知患ז鍑瘶 // simple answer result = array?.first

Slide 45

Slide 45 text

Y%PVCMF ָ֮׷הֹծYך䎂倯呎׾鎘皾׃׋ְկ׋׌׃ծ YָOJMת׋כ頾ך侧ך㜥さכOJM׾䖤׋ְկזֶծTRSU׾㸜Ⰻ ח׃׋頾ך侧׾床ׅהOJM׾鵤ׅꟼ侧TBGF4RSU%PVCMF %PVCMF ָ֮׷׮ךה׃ג罋ִג葺ְկ

Slide 46

Slide 46 text

♧菙涸鍑瘶 // 3൪ if let x0 = x { resultDouble = safeSqrt(x0) } else { resultDouble = nil } // Double??ʹͳΔ͚Ͳ... let result3: Double?? = x.map { safeSqrt($0) } // ??Λ࢖͏ resultDouble = x.map { safeSqrt($0) } ?? nil

Slide 47

Slide 47 text

㸜Ⰻַא知患ז鍑瘶 // simple answer resultDouble = x.flatMap { safeSqrt($0) } // ΋ͬͱ୹͘ʂ resultDouble = x.flatMap(safeSqrt)

Slide 48

Slide 48 text

B*OU הC*OU ָ֮׷הֹծBC׾鎘皾 ׃׋ְկ׋׌׃ծBַCָOJMך㜥さחכOJM ׾䖤׋ְկ

Slide 49

Slide 49 text

♧菙涸鍑瘶 // 4൪ if let a0 = a { if let b0 = b { result = a0 + b0 } else { result = nil } } else { result = nil } // Int??ʹͳΔ͚Ͳ... result2 = a.map { a0 in b.map { b0 in a0 + b0 } }

Slide 50

Slide 50 text

㸜Ⰻַא知患ז鍑瘶 // simple answer result = a.flatMap { a0 in b.map { b0 in a0 + b0 } }

Slide 51

Slide 51 text

⟃♳ד

Slide 52

Slide 52 text

0QUJPOBMܕօ఻ ˋ➬穈׫ה嚊䙀ד椚鍑ׅ׷0QUJPOBM㘗ˋ hUPVZPV

Slide 53

Slide 53 text

הְֲせך

Slide 54

Slide 54 text

2JJUB 4XJGUך0QUJPOBM㘗׾噰׭׷CZ!LPIFSׁ׿ ך銲秈׾穄׻׶ח׃תׅկ

Slide 55

Slide 55 text

5IBOLTGPSMJTUFOJOH˘ ˟铡僇׃ֹ׸זַ׏׋鿇ⴓכ⯋ך鎸✲׾铣׿ד׫גֻ׌ְׁկ

Slide 56

Slide 56 text

׵ְע׶סֻ֭׋׶׿ּ