Slide 1

Slide 1 text

OPTIONAL TYPE MOBILE PROGRAMMING 19TH DEC

Slide 2

Slide 2 text

OPTIONAL TYPE?

Slide 3

Slide 3 text

ςΩετ OPTIONAL TYPE? ▸ Swiftʹසൟʹग़ͯ͘Δ ? ΍ ! ϚʔΫͷਖ਼ମ ▸ Swift͚ͩͰͳ͘ϞμϯͳݴޠʹΑ͘ݟΒΕΔ nil (null) Λ҆શʹѻ͏ҝͷػೳ ▸ ී௨ͷ஋͚ͩͰͳ͘ nil ΋ೖΕΔ͜ͱ͕Ͱ͖ΔίϯςφͷΑ͏ͳ΋ͷ ▸ ܕఆٛͷࡍʹ຤ඌʹ ? Λ͚ͭΔ͜ͱͰOptional Type ʹͳΔ ▸ SwiftͰ͸Optionalͱͯ͠ఆٛ͞Εͨม਺ͷΈnilΛ୅ೖ͢Δ͜ͱ͕Ͱ͖Δ ▸ Optional TypeʹͳΔͱී௨ͷܕͱͯ͠͸࢖͑ͳ͍ͷͰҰ౓Optional͔Β σʔλΛऔΓग़͢ඞཁ͕͋Δ

Slide 4

Slide 4 text

ςΩετ ࣮ࡍͷίʔυ // ม਺ͷ৔߹ var indexOrNil: Int? = 0 // ͜ͷΑ͏ʹ΋ॻ͚Δ var optionalNum: Optional = 10 // ؔ਺ͷ৔߹ func getImage(named: String?) -> UIImage? { // লུ ... } // ͜Ε͸Ͱ͖ͳ͍ print("added: \(optionalNum + 10)”) // ͳΜΒ͔ͷํ๏ͰOptional͔Β஋ΛऔΓग़͢ඞཁ͕͋Δ(ࠓճ͸!ϚʔΫ) print("added: \(optionalNum! + 10)”)

Slide 5

Slide 5 text

ͳΜΒ͔ͷํ๏ͬ ͯʁ

Slide 6

Slide 6 text

OPTIONAL UNWRAP ʹ͍ͭͯ

Slide 7

Slide 7 text

ςΩετ OPTIONAL UNWRAP? ▸ ίʔυͷྫͰݟͨΑ͏ʹOptional type͸Ұ౓σʔλΛऔΓ ग़͔ͯ͠Β࢖͏ඞཁ͕͋Δ ▸ ͜ΕΛ unwrap(։ࣔ?) ͱݺͿ ▸ unwrap͢Δํ๏͸͍͔ͭ͋͘ΔͷͰঢ়گʹΑͬͯ࢖͍෼͚ Δ͜ͱ͕େࣄ

Slide 8

Slide 8 text

ํ๏1. FORCED UNWRAP

Slide 9

Slide 9 text

ςΩετ FORCED UNWRAP? ▸ ଟ෼͜Ε͕Ұ൪͓खܰͳํ๏ ▸ optionalͰఆٛ͞Εͨม਺ͷ຤ඌʹ ! ϚʔΫΛ͚ͭΔ͚ͩ ▸ ͨͩ͠஋͕͋Δ͔nil͔Ͱ͋Δ͔ʹؔΘΒͣڧ੍తʹOptionalΛ unwrapͯ͠͠·͏ ▸ ͦͷҝnilͩͬͨ৔߹͸ϓϩάϥϜ͕Ϋϥογϡ͢Δ ▸ ͲΜͳͱ͖΋஋͕࣮֬ʹೖ͍ͬͯΔͱ͍͏͜ͱ(ઈରnilʹ͸ͳΒͳ͍ ͱ͍͏ࣄ)͕อূͰ͖Δ৔߹ͷΈ࢖͍·͠ΐ͏

Slide 10

Slide 10 text

ςΩετ ࣮ࡍͷίʔυ // ม਺ͷ৔߹ var nilNumber: Int? = nil // ͜ͷΑ͏ʹ΋ॻ͚Δ var optionalNum: Optional = 10 //ม਺ optionalNum ͷ຤ඌʹ!ϚʔΫΛ͚ͭͯ஋ΛऔΓग़͢ print("added: \(optionalNum! + 10)”) //͜Ε͸Ϋϥογϡʂ print("added: \(nilNumber! + 10)”)

Slide 11

Slide 11 text

ํ๏2. NIL COALESCING OPERATOR

Slide 12

Slide 12 text

ςΩετ NIL COALESCING OPERATOR? ▸ ͪ͜Β΋ඇৗʹ͓खܰͳํ๏͔ͭ҆શ ▸ optionalͰఆٛ͞Εͨม਺ͷޙΖʹ ?? Λͬͭ͘ ͚Δ ▸ ?? ԋࢉࢠ͸஋͕͋Ε͹ͦͷ஋Λฦ͠ɺnilͰ͋Ε͹ࢦఆͨ͠ defaultValueΛฦ͢ ▸ defaultValue ͑͞༻ҙͰ͖Ε͹҆શ͔͓ͭखܰʹ Unwrap Ͱ͖Δ ▸ get or elseͱݺ͹ΕΔ͜ͱ΋͋Δ

Slide 13

Slide 13 text

ςΩετ ࣮ࡍͷίʔυ // ม਺ͷ৔߹ var nilNumber: Int? = nil // ͜ͷΑ͏ʹ΋ॻ͚Δ var optionalNum: Optional = 10 // ม਺ optionalNum ͷޙΖʹ ?? ϚʔΫΛ͚ͭͯ஋ΛऔΓग़͢ // ม਺ optionalNum ͕ nil ͩͬͨΒ 0 ʹͳΔ print("added: \((optionalNum ?? 0) + 10)”)

Slide 14

Slide 14 text

ํ๏3.OPTIONAL BINDING

Slide 15

Slide 15 text

ςΩετ OPTIONAL BINDING? ▸ ԋࢉࢠΛ࢖͏ํ๏ʹൺ΂Δͱίʔυྔ͸૿͑Δ͕ͱͯ΋҆શ ʹѻ͑Δ ▸ if let ΍ guard let, switch Λ࢖ͬͯ unwrap ͢Δํ๏ ▸ ͦΕͧΕܗ͸ҧ͏͕શͯ optional ͷத਎Λ৽͍͠ఆ਺ʹଋ റ(bind)͢Δ͜ͱͰunwrap͢Δ ▸ Ұ൪Α͘࢖͏ํ๏͔΋

Slide 16

Slide 16 text

ςΩετ ࣮ࡍͷίʔυ * ௕͘ͳΔͷͰXcodeͰ