Slide 1

Slide 1 text

4XJGUΛΩΊΔͱ ؾ͍͍࣋ͪʂ AKIBA.swift #04

Slide 2

Slide 2 text

About Me • ాத ޹໌ (Takaaki Tanaka) • Ϋϥεϝιουגࣜձࣾ • @kongmingtrap • iOS Developer (Swift / Objective-C) • GyazSquare / GitHub

Slide 3

Slide 3 text

օ༷

Slide 4

Slide 4 text

4XJGUॻ͍͍ͯ·͔͢ʁ

Slide 5

Slide 5 text

0CKFDUJWF$͔Βೖ͖ͬͯͨํʑ

Slide 6

Slide 6 text

πϥ͘ͳ͍Ͱ͔͢ʁ

Slide 7

Slide 7 text

๻͸πϥ͔ͬͨͰ͢ɻ

Slide 8

Slide 8 text

ͦΕ͔Βɻɻɻ৭ʑ͋Γɻɻɻ

Slide 9

Slide 9 text

ศརͳؔ਺Λ࢖ͬͯ ؆ܿʹॻ͘Α͏ʹ͢Δ͜ͱͰ ॻ͘ͷָ͕͘͠ͳ͖ͬͯ·ͨ͠ɻ

Slide 10

Slide 10 text

ศརͳؔ਺ w GPS&BDI w NBQ w SFEVDF w pMUFS w qBUNBQ

Slide 11

Slide 11 text

ศརͳؔ਺ w GPS&BDI w NBQ w SFEVDF w pMUFS w qBUNBQ

Slide 12

Slide 12 text

NBQqBUNBQ w 0QUJPOBM w 4FRVFODF5ZQF w $PMMFDUJPO w 'MBU.BQ ద༻͞Ε͍ͯΔऀͨͪ

Slide 13

Slide 13 text

NBQqBUNBQ public func map( _ transform: @noescape (Wrapped) throws -> U ) rethrows -> U? { switch self { case .some(let y): return .some(try transform(y)) case .none: return .none } }

Slide 14

Slide 14 text

ࡉ͔͍આ໌͸ল͍ͯޙʹͯ͠࢖ͬͯΈΑ͏

Slide 15

Slide 15 text

NBQqBU.BQͰ ಈ࡞Λൺ΂ͯΈΔ

Slide 16

Slide 16 text

&YBNQMF enum PokemonType: String { case Grass = "Grass" case Water = "Water" case Fire = "Fire" case Electric = "Electric" } ͋Δ࣌͜Μͳ&OVN͕͓Γ·ͨ͠ɻ

Slide 17

Slide 17 text

4FRVFODF let types = ["Grass", "Water", "Fire", "Electric"] let pokemonTypes = types.map { PokemonType(rawValue: $0) } [Optional PokemonType.Grass Optional PokemonType.Water Optional PokemonType.Fire Optional PokemonType.Electric ] ݁Ռ͕0QUJPOBMʹͳΔ

Slide 18

Slide 18 text

4FRVFODF let types = ["Grass", "Water", "Fire", "Electric"] let pokemonTypes = types.flatMap { PokemonType(rawValue: $0) } [PokemonType.Grass PokemonType.Water PokemonType.Fire PokemonType.Electric] ݁Ռ͕VOXSBQ͞ΕΔ

Slide 19

Slide 19 text

4FRVFODF let types = ["Grass", "Water", "Fire", "Ice"] let pokemonTypes = types.map { PokemonType(rawValue: $0) } [Optional PokemonType.Grass Optional PokemonType.Water Optional PokemonType.Fire nil] ۪௚ʹ݁ՌΛฦ͢

Slide 20

Slide 20 text

4FRVFODF let types = ["Grass", "Water", "Fire", "Ice"] let pokemonTypes = types.flatMap { PokemonType(rawValue: $0) } [PokemonType.Grass PokemonType.Water PokemonType.Fire] ݁Ռ͕VOXSBQ͞ΕɺOJM͕ଧͪফ͞ΕΔ

Slide 21

Slide 21 text

$PMMFDUJPO let types1 = ["Electric", "Electric", "Fire"] let types2 = ["Water", "Ice"] let types3 = ["Fire", "Grass", "Rock", "Grass"] let types = [types1, types2, types3].map { $0 } [["Electric", "Electric", "Fire"], ["Water", "Ice"], ["Fire", "Grass", "Rock", "Grass"]]

Slide 22

Slide 22 text

$PMMFDUJPO let types1 = ["Electric", "Electric", "Fire"] let types2 = ["Water", "Ice"] let types3 = ["Fire", "Grass", "Rock", "Grass"] let types = [types1, types2, types3].flatMap { $0 } ["Electric", "Electric", "Fire", "Water", "Ice", "Fire", "Grass", "Rock", "Grass"] ݁Ռ͕qBUͳ"SSBZʹͳΔ

Slide 23

Slide 23 text

$PMMFDUJPO let types1 = ["Electric", "Electric", "Fire"] let types2 = ["Water", "Ice"] let types3 = ["Fire", "Grass", "Rock", "Grass"] let types = [types1, types2, types3].flatMap { $0 }.flatMap { PokemonType(rawValue: $0) } [PokemonType.Electric PokemonType.Electric PokemonType.Fire PokemonType.Water PokemonType.Fire PokemonType.Grass PokemonType.Grass] OJM͕ଧͪফ͞ΕΔͨΊɺཉ͍͠σʔλ͚ͩ࢒Δ

Slide 24

Slide 24 text

0QUJPOBM let value: String? = "Fire" let value1 = value.map { PokemonType(rawValue: $0) } Optional Optional PokemonType.Fire ݁Ռ͕ೋॏͷ0QUJPOBMʹͳΔ

Slide 25

Slide 25 text

0QUJPOBM let value: String? = "Fire" let value1 = value.flatMap { PokemonType(rawValue: $0) } Optional PokemonType.Fire ݁Ռͷ0QUJPOBM͕ଧͪফ͞ΕΔʢVOXSBQ͞ΕΔʣ

Slide 26

Slide 26 text

0QUJPOBM let type = PokemonType(rawValue: "Water") let changedType = pokemon.map { type -> PokemonType in switch type { case .Water: return PokemonType.Electric default: return type } } Optional PokemonType.Electric VOXSBQͯ͠஋ΛऔΓѻ͏

Slide 27

Slide 27 text

0QUJPOBM let value1: Int? = 10 let value2: Int? = 20 let value = value1.flatMap { v1 in value2.map { v2 in v1 + v2 } } Optional 30 0QUJPOBMಉ࢜ͷ஋ͷܭࢉ

Slide 28

Slide 28 text

·ͱΊ w ؆ܿʹॻ͜͏ w 0QUJPOBMͱ஥ྑ͘෇͖߹͓͏ w 1MBZHSPVOEΛ༗ޮ׆༻͠Α͏

Slide 29

Slide 29 text

5IBOL:PV