Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ؔΛҾͱͯ͢͠ॻ͖ํͷϙΠϯτ Ճ౻༝܇ / @yoshikuni_kato iOSDC 2017 2017/09/17 1
Slide 2
Slide 2 text
Who am I? • Ճ౻༝܇ʢYoshikuni Katoʣ @yoshikuni_kato • iOSΤϯδχΞʢ2.5 yearsʣ • Yahoo! Japan -> Φϋί • ʮϥδ͐ʯ͘Μ → • Interests: ઃܭ / FRP / Coordinator PaFern / UI࣮ 2
Slide 3
Slide 3 text
func%onalʹॻ͘ • func&onalʹॻ͘͜ͱ͕૿͖͑ͯͨ • FRP (RxSwi3 / Reac&veSwi3) • map / filter / reduce • iffor͕ݮΔ • એݴతʹॻ͚Δ 3
Slide 4
Slide 4 text
͜ͷLTͰγΣΞ͢Δ͜ͱ • ؔΛҾͱͯ͢͠߹ͷॻ͖ํ → গ͠ͷมߋ͚ͩͲɺΑΓએݴతʹݟ͑Δํ๏ • arrayͷmapΛྫʹ 4
Slide 5
Slide 5 text
ॻ͖ํ̍ - ΫϩʔδϟΛॻ͘ let array: [Int] = [1, 2, 3] array.map { number -> Int in return number * 2 } 5
Slide 6
Slide 6 text
arrayͷmapͷఆٛ func map(_ transform: (Element) throws -> T) rethrows -> [T] • mapͷҾɿElementΛड͚औͬͯTΛฦ͢Ϋϩʔδϟ • ؔɺ໊લ͖ͷΫϩʔδϟͱଊ͑ΒΕΔ • ؔࣗମΛ͢͜ͱ͕Ͱ͖Δ 6
Slide 7
Slide 7 text
ॻ͖ํ̎ - ؔΛ͢ // ઌʹؔΛఆٛ func twoTimes(of number: Int) -> Int { return number * 2 } let array: [Int] = [1, 2, 3] array.map(twoTimes) // ؔΛ͢ 7
Slide 8
Slide 8 text
ύϥϝʔλʔ͕ෳ͋Δ߹ func someFunc(a: Int, b: Int) -> String { return "a = \(a), b = \(b)" } let array: [Int] = [1, 2, 3] array .map { number -> (a: Int, b: Int) in return (a: number, b: number) // Ұ୴λϓϧʹ͢Δ } .map(someFunc) 8
Slide 9
Slide 9 text
ΠχγϟϥΠβͷ߹ struct Sample { let number: Int init(number: Int) { self.number = number } } 9
Slide 10
Slide 10 text
ॻ͖ํ̍ - ΫϩʔδϟΛॻ͘ let array: [Int] = [1, 2, 3] array.map { number -> Sample in return Sample(number: number) } 10
Slide 11
Slide 11 text
ॻ͖ํ̎ - ؔΛ͢ let array: [Int] = [1, 2, 3] array.map(Sample.init) • ΠχγϟϥΠβ(.init) = ͦͷObjectΛฦؔ͢ 11
Slide 12
Slide 12 text
ҧ͍ 1 array.map { number -> Sample in return Sample(number: number) } array.map(Sample.init) 12
Slide 13
Slide 13 text
ҧ͍ 2 array .map { number -> Int in return number * 2 } .map { number -> Sample in return Sample(number: number) } .map { sample -> Foo in return Foo(sample: sample) } array .map(twoTimes) .map(Sample.init) .map(Foo.init) 13
Slide 14
Slide 14 text
·ͱΊ • গ͠ॻ͖ํΛม͑Δ͚ͩͰɺΑΓએݴతʹॻ͚Δํ๏Λհ • ׆༻ྫɿModel͔ΒViewModelͷม ɹ model.map(ViewModel.init) • ݁ՌతʹɺॲཧΛؔʹΓग़͍ͯ͘͜͠ͱʹͳΔ • ؔΛ͍ͯ͘͠ײ֮ʢखଓ͖ܕͷײ͔֮ΒঃʑʹΕΔʣ 14
Slide 15
Slide 15 text
ࢀߟ • Connec'ng View Controllers, Swi3 Talk1 • From Run'me Programming to Func'ons, Swi3 Talk2 2 h$ps:/ /talk.objc.io/episodes/S01E19-from-run@me-programming-to-func@ons 1 h$ps:/ /talk.objc.io/episodes/S01E05-connec;ng-view-controllers 15
Slide 16
Slide 16 text
͓·͚ func someFunc(a: Int, b: Int) -> String { return "a: \(a), b: \(b)" } // λϓϧͤͳ͍ let parameters = (a: 0, b: 0) someFunc(parameters) // !ʢswift3~ʣ // mapͩͱͤΔ let array: [(Int, Int)] = [(0, 0)] array.map(someFunc) // "ʢswift3Ͱʣ • ͳͥॻ͚Δͷ͔͔͍ͬͯΔਓ͕͍ͨΒڭ͍͑ͯͩ͘͞ 16