Slide 1

Slide 1 text

ࠓ೔͔Β࢖͑Δʂ OptionalΛ͍͍ײ͡ʹѻ͏tips 2019/3/19 ͋Δ͋ΔLTʙεϚϗΞϓϦ։ൃΤϯδχΞʙ Vol.3 PKPK-Carnage(Tomosuke Okada)

Slide 2

Slide 2 text

About me • iOSྺ2೥ͪΐͬͱ • Qiita → @PKPK-Carnage • Github → PKPK-Carnage • Twitter → @PKPK-Carnage

Slide 3

Slide 3 text

࠷ۙࢥͬͨ͜ͱɾɾɾ 3

Slide 4

Slide 4 text

4 OptionalΛ੍͢Δऀ͸SwiftΛ੍͢!!

Slide 5

Slide 5 text

tips1: switch 5

Slide 6

Slide 6 text

switch 6 enum TestType: Int { case hoge = 0 case fuga = 1 case piyo = 2 }

Slide 7

Slide 7 text

switch 7 func generateText(from index: Int) -> String { guard let unwrappedType = TestType(rawValue: index) else { return "" } switch unwrappedType { case .hoge: return "Hoge" case .fuga: return "Fuga" case .piyo: return "Piyo" } }

Slide 8

Slide 8 text

case?ͱ.noneΛ࢖͏ͱɾɾɾ 8

Slide 9

Slide 9 text

switch 9 func generateText(from index: Int) -> String { guard let unwrappedType = TestType(rawValue: index) else { return "" } switch unwrappedType { case .hoge: return "Hoge" case .fuga: return "Fuga" case .piyo: return "Piyo" } }

Slide 10

Slide 10 text

switch 10 func generateText(from index: Int) -> String { switch TestType(rawValue: index) { case .hoge?: return "Hoge" case .fuga?: return "Fuga" case .piyo?: return "Piyo" case .none: return "" } }

Slide 11

Slide 11 text

switchͷ൑ఆର৅͕nilͩͬͨ৔߹ͷॲཧΛ .none಺ʹهड़Ͱ͖Δʂ 11

Slide 12

Slide 12 text

tips2: Nil Coalescing Operator + Closure 12

Slide 13

Slide 13 text

Nil Coalescing Operator 13 let text = "" let intValue = Int(text) == nil ? 0 : Int(text)!

Slide 14

Slide 14 text

Nil Coalescing Operator 14 let text = "" let intValue = Int(text) ?? 0

Slide 15

Slide 15 text

ཁ͢Δʹࡾ߲ԋࢉࢠͷলུ 15

Slide 16

Slide 16 text

??ͷޙʹ͸Closure΋ࢦఆͰ͖Δ 16

Slide 17

Slide 17 text

Nil Coalescing Operator 17 let text = "" let intValue = Int(text) ?? 0

Slide 18

Slide 18 text

Nil Coalescing Operator + Closure 18 let text = "" let intValue = Int(text) ?? { return 0 }()

Slide 19

Slide 19 text

͜ΕͰ͖ͯԿʹͳΔͷʁ 19

Slide 20

Slide 20 text

׆༻๏ 20 let text = "" let intValue = Int(text) ?? { return 0 }()

Slide 21

Slide 21 text

׆༻๏ 21 let text = "" let intValue = Int(text) ?? { assertionFailure("਺ࣈͷςΩετ͕ೖͬͯ·ͤΜʂ") return 0 }()

Slide 22

Slide 22 text

σόοάϏϧυͷ͚࣌ͩnilͩͬͨ࣌ʹ Ϋϥογϡͤ͞ΒΕΔ 22

Slide 23

Slide 23 text

·ͱΊ • optionalͷΦϒδΣΫτΛswitchʹ͢Δͱ͖͸ɺcase? ͱ.noneΛ࢖͏ͱΞϯϥοϓ͢Δඞཁ͕ͳ͍ • ??ͷޙʹ͸ClosureΛೖΕΔ͜ͱ͕Ͱ͖ΔͷͰɺ͔ͳΓࣗ༝ ౓͕ߴ͍ɻ 23

Slide 24

Slide 24 text

͓ΘΓ 24