Swiftͷmap͔Βͦͷ࣍2016/08/04oyuk(@oydku)
View Slide
ࣗݾհ• oyuk(@oydku)• iosΞϓϦΤϯδχΞ!
Swiftͷmapmap͕͑ΔͭΒ͍͔ͭ͋͘ΔΑͶ• Optional (Enum)• Array (CollectionType)• ObservableType (RxSwift)ଞʹ͔͋ͬͨͶɻ͋ͬͨΒڭ͑ͯ
mapͷఆٛΛݟΔOptionalfunc map(@noescape f: (Wrapped) throws -> U) rethrows -> U?Arrayfunc map(@noescape transform: (Self.Generator.Element) throws -> T) rethrows -> [T]ObservableTypepublic func map(selector: Self.E throws -> R) -> RxSwift.Observable
ڞ௨͋ΔΑͶ!
͍͍ͩͨ͜Μͳײ͡func map(f:T -> U) -> ͋Δ
͍͍ͩͨ͜Μͳײ͡func map(f:T -> U) -> ͋ΔOptionalfunc map(@noescape f: (Wrapped) throws -> U) rethrows -> U?• Wrapped->UͷؔΛWrappedʹద༻ͯ͠U?Λฦ͢• ͋Δ͜͜ͰU?
͍͍ͩͨ͜Μͳײ͡func map(f:T -> U) -> ͋ΔArrayfunc map(@noescape transform: (Self.Generator.Element) throws -> T) rethrows -> [T]• Self.Generator.Element->TͷؔΛSelf.Generator.Elementʹద༻ͯ͠[T]Λฦ͢• ͋Δ͜͜Ͱ[U]
͍͍ͩͨ͜Μͳײ͡func map(f:T -> U) -> ͋ΔObservableTypepublic func map(selector: Self.E throws -> R) -> RxSwift.Observable• Self.E->RͷؔΛSelf.Eʹద༻ͯ͠RxSwift.ObservableΛฦ͢• ͋Δ͜͜ͰRxSwift.Observable
Μʁ
Ͳͷmapಉ͡ʢ͖ͬ͞ݴͬͨʣfunc map(f:T -> U) -> ͋Δ• ͋Δʹؔ(T->U)Λద༻ͯ͋͠ΔΛฦ͢
۩ମతʹfunc map(f:Int -> String) -> OptionalOptionallet o:Optional = Optional(1).map{String($0)}
۩ମతʹfunc map(f:Int -> String) -> ArrayArraylet a:Array = Array(arrayLiteral: 1,2,3).map {String($0)}
۩ମతʹfunc map(f:Int -> String) -> ObservableObservableTypelet o:Observable = Observable.just(1).map{String($0)}
ΈΜͳಉͩ͡Ͷʢ͖ͬ͞ݴͬͨʣlet a:͋Δ = ͋Δ.map{U($0)}• ͋Δ͕• Optional• Array• ObservableʹͳΔΘ͚Ͱ͢ͳ
͋ΔͬͯԿʁ
Functor• શମΛҠͤΔͷΛද͢• ؔखͱ͍͏Β͍͠• ശʹྫ͑ΒΕΔࣄ͕͋ΔΠϝʔδlet a:Functor = Functor.map{U($0)}
Functorlet o:Optional = Optional(1).map{String($0)}map͕͍ͯ͠Δ͜ͱ1. Optionalͱ͍͏ശͷதΛऔΓग़͠ɺ͜ΕΛ$0ͱ͢Δɻ2. $0ΛStringʹΩϟετ3. $0ΛOptionalͱ͍͏ശʹೖΕͯฦ͢
Functorlet a:Array = Array(arrayLiteral: 1,2,3).map {String($0)}map͕͍ͯ͠Δ͜ͱ1. Arrayͱ͍͏ശͷதΛऔΓग़͠ɺ͜ΕΛ$0ͱ͢Δɻ2. $0ʢ֤ཁૉʣΛStringʹΩϟετ3. $0ΛArrayͱ͍͏ശʹೖΕͯฦ͢
Functorlet o:Observable = Observable.just(1).map{String($0)}map͕͍ͯ͠Δ͜ͱ1. Observableͱ͍͏ശͷதΛऔΓग़͠ɺ͜ΕΛ$0ͱ͢Δɻ2. $0ΛStringʹΩϟετ3. $0ΛObservableͱ͍͏ശʹೖΕͯฦ͢
·ͱΊ• mapͷഎޙʹFunctorͱ͍͏֓೦͕͋Δ• FunctorશମΛҠͤΔΛ͋ΒΘ͢• ࠓճͷྫͰOptional,Array,Observable• શମΛҠ͢ಈ࡞͕mapͰ͋Δ