Slide 1

Slide 1 text

Swiftͷmap͔Βͦͷ࣍ ΁ 2016/08/04 oyuk(@oydku)

Slide 2

Slide 2 text

ࣗݾ঺հ • oyuk(@oydku) • iosΞϓϦΤϯδχΞ!

Slide 3

Slide 3 text

Swiftͷmap map͕࢖͑Δ΍ͭΒ͍͔ͭ͋͘ΔΑͶ • Optional (Enum) • Array (CollectionType) • ObservableType (RxSwift) ଞʹ͔͋ͬͨ΋Ͷɻ͋ͬͨΒڭ͑ͯ

Slide 4

Slide 4 text

mapͷఆٛΛݟΔ Optional func map(@noescape f: (Wrapped) throws -> U) rethrows -> U? Array func map(@noescape transform: (Self.Generator.Element) throws -> T) rethrows -> [T] ObservableType public func map(selector: Self.E throws -> R) -> RxSwift.Observable

Slide 5

Slide 5 text

ڞ௨఺͋ΔΑͶ!

Slide 6

Slide 6 text

͍͍ͩͨ͜Μͳײ͡ func map(f:T -> U) -> ͋Δ෺

Slide 7

Slide 7 text

͍͍ͩͨ͜Μͳײ͡ func map(f:T -> U) -> ͋Δ෺ Optional func map(@noescape f: (Wrapped) throws -> U) rethrows -> U? • Wrapped->Uͷؔ਺ΛWrappedʹద༻ͯ͠U?Λฦ͢ • ͋Δ෺͸͜͜Ͱ͸U?

Slide 8

Slide 8 text

͍͍ͩͨ͜Μͳײ͡ func map(f:T -> U) -> ͋Δ෺ Array func map(@noescape transform: (Self.Generator.Element) throws -> T) rethrows -> [T] • Self.Generator.Element->Tͷؔ਺Λ Self.Generator.Elementʹద༻ͯ͠[T]Λฦ͢ • ͋Δ෺͸͜͜Ͱ͸[U]

Slide 9

Slide 9 text

͍͍ͩͨ͜Μͳײ͡ func map(f:T -> U) -> ͋Δ෺ ObservableType public func map(selector: Self.E throws -> R) -> RxSwift.Observable • Self.E->Rͷؔ਺ΛSelf.Eʹద༻ͯ͠ RxSwift.ObservableΛฦ͢ • ͋Δ෺͸͜͜Ͱ͸RxSwift.Observable

Slide 10

Slide 10 text

Μʁ

Slide 11

Slide 11 text

Ͳͷmap΋ಉ͡ʢ͖ͬ͞ݴͬͨʣ func map(f:T -> U) -> ͋Δ෺ • ͋Δ෺ʹؔ਺(T->U)Λద༻ͯ͋͠Δ෺Λฦ͢

Slide 12

Slide 12 text

۩ମతʹ func map(f:Int -> String) -> Optional Optional let o:Optional = Optional(1).map{String($0)}

Slide 13

Slide 13 text

۩ମతʹ func map(f:Int -> String) -> Array Array let a:Array = Array(arrayLiteral: 1,2,3).map {String($0)}

Slide 14

Slide 14 text

۩ମతʹ func map(f:Int -> String) -> Observable ObservableType let o:Observable = Observable.just(1).map{String($0)}

Slide 15

Slide 15 text

ΈΜͳಉͩ͡Ͷʢ͖ͬ͞ݴͬͨʣ let a:͋Δ෺ = ͋Δ෺.map{U($0)} • ͋Δ෺͕ • Optional • Array • Observable ʹͳΔΘ͚Ͱ͢ͳ

Slide 16

Slide 16 text

͋Δ෺ͬͯԿʁ

Slide 17

Slide 17 text

Functor • શମΛҠͤΔ΋ͷΛද͢ • ؔखͱ͍͏Β͍͠ • ശʹྫ͑ΒΕΔࣄ͕͋Δ Πϝʔδ let a:Functor = Functor.map{U($0)}

Slide 18

Slide 18 text

Functor let o:Optional = Optional(1).map{String($0)} map͕͍ͯ͠Δ͜ͱ͸ 1. Optionalͱ͍͏ശͷத਎ΛऔΓग़͠ɺ͜ΕΛ$0ͱ͢ Δɻ 2. $0ΛStringʹΩϟετ 3. $0ΛOptionalͱ͍͏ശʹೖΕͯฦ͢

Slide 19

Slide 19 text

Functor let a:Array = Array(arrayLiteral: 1,2,3).map {String($0)} map͕͍ͯ͠Δ͜ͱ͸ 1. Arrayͱ͍͏ശͷத਎ΛऔΓग़͠ɺ͜ΕΛ$0ͱ͢Δɻ 2. $0ʢ֤ཁૉʣΛStringʹΩϟετ 3. $0ΛArrayͱ͍͏ശʹೖΕͯฦ͢

Slide 20

Slide 20 text

Functor let o:Observable = Observable.just(1).map{String($0)} map͕͍ͯ͠Δ͜ͱ͸ 1. Observableͱ͍͏ശͷத਎ΛऔΓग़͠ɺ͜ΕΛ$0ͱ͢ Δɻ 2. $0ΛStringʹΩϟετ 3. $0ΛObservableͱ͍͏ശʹೖΕͯฦ͢

Slide 21

Slide 21 text

·ͱΊ • mapͷഎޙʹ͸Functorͱ͍͏֓೦͕͋Δ • Functor͸શମΛҠͤΔ෺Λ͋ΒΘ͢ • ࠓճͷྫͰ͸Optional,Array,Observable • શମΛҠ͢ಈ࡞͕mapͰ͋Δ