Slide 1

Slide 1 text

ྻڍܕ MOBILE PROGRAMMING 12TH DEC

Slide 2

Slide 2 text

1. ྻڍܕʁ

Slide 3

Slide 3 text

ςΩετ ྻڍܕ(ENUM)ͱ͸ʁ ▸ ؔ࿈͢Δ஋ΛҰͭͷܕͱͯ͠·ͱΊͨ΋ͷ ▸ ྫ͑͹ϙέϞϯͷλΠϓͳͲ͸ྻڍܕ(enum)Ͱද͢͜ͱ͕Ͱ ͖Δ ▸ λΠϓͰॲཧΛ෼͚͍ͨ৔߹จࣈྻ΍਺ࣈΛ࢖͏ΑΓ΋enum Λ࢖͏ํ͕ϛεΛແ͘͠΍͘͢ɺ҆શʹ࣮૷͢Δ͜ͱ͕Ͱ͖Δ ▸ จ๏͸enum { case member1 case member2 }

Slide 4

Slide 4 text

ςΩετ ࣮ࡍͷίʔυ(ENUMͷఆٛ) // ϙέϞϯͷλΠϓΛEnumͰ·ͱΊͨ৔߹ enum PokemonType { case fire // ΄ͷ͓λΠϓ case grass // ͘͞λΠϓ case water // ΈͣλΠϓ case normal // ϊʔϚϧλΠϓ }

Slide 5

Slide 5 text

ςΩετ ࣮ࡍͷίʔυ(ม਺ʹೖΕΔ) // ϙέϞϯͷλΠϓΛEnumͰ·ͱΊͨ৔߹ enum PokemonType { case fire // ΄ͷ͓λΠϓ case grass // ͘͞λΠϓ case water // ΈͣλΠϓ case normal // ϊʔϚϧλΠϓ } var pokemonType: PokemonType pokemonType = PokemonType.fire // جຊܕ pokemonType = .grass // ܕͷ໊લ͸লུՄೳ

Slide 6

Slide 6 text

ςΩετ ࣮ࡍͷίʔυ(ϓϩύςΟ΍ϝιου΋ఆٛͰ͖·͢) enum PokemonType { // লུ… func getTypeString() -> String { switch self { case .fire: return "΄ͷ͓" case .grass: return "͘͞" case .water: return "Έͣ" case .normal: return "ϊʔϚϧ" } } } var pokemonType: PokemonType = .fire print(pokemonType.getTypeString()) // ϝιουݺͼग़͠

Slide 7

Slide 7 text

2. ENUMʹ͍ͭͯ

Slide 8

Slide 8 text

ςΩετ ENUMͷಛ௃ ▸ switch(NintendoͰͳ͍)Ͱ enum Λ࢖͏৔߹defaultΛॻ͔ ͳͯ͘͢Ή(໢ཏνΣοΫ) ▸ ϝϯόʔ͕஋Λ࣋ͨͤΔ͜ͱ͕Ͱ͖Δ (஋ܕenum) ▸ ϝϯόʔʹؔ࿈͢ΔܕΛ͚ͬͭ͘Δ͜ͱ͕Ͱ͖Δ (ؔ࿈ܕ enum)

Slide 9

Slide 9 text

2-1. ENUMͷ໢ཏ νΣοΫ

Slide 10

Slide 10 text

ςΩετ ໢ཏνΣοΫ? ▸ enum Ͱ switchͰ৚݅෼ذΛߦ͏ࡍʹνΣοΫ͕ೖΔ ▸ ͦͷenumͷϝϯό͕શͯྻڍ͞Ε͍ͯΔ͔ΛνΣοΫͯ͠ ଍Γͳ͍৔߹͸ΤϥʔΛग़͢(ίϯύΠϧΤϥʔ) ▸ ྻڍܕͷϝϯό͸਺͕ܾ·͍ͬͯΔͷͰ͜ͷΑ͏ͳνΣοΫ ͕Մೳ ▸ ΤϥʔΛղফ͢Δʹ͸શͯͷϝϯόΛྻڍ͢Δ͔ default Λ هड़͢Δ

Slide 11

Slide 11 text

ςΩετ ࣮ࡍͷίʔυ(͜ͷΑ͏ͳENUM͕͋ͬͨ৔߹) // ϙέϞϯͷλΠϓΛEnumͰ·ͱΊͨ৔߹ enum PokemonType { case fire // ΄ͷ͓λΠϓ case grass // ͘͞λΠϓ case water // ΈͣλΠϓ case normal // ϊʔϚϧλΠϓ }

Slide 12

Slide 12 text

ςΩετ ࣮ࡍͷίʔυ(͜Μͳ෩ʹνΣοΫ͕͞Ε·͢) // ͬͪ͜͸OK(ϝϯό͕શͯྻڍ͞Ε͍ͯΔ) func getTypeString() -> String { switch self { case .fire: return "΄ͷ͓" case .grass: return "͘͞" case .water: return "Έͣ" case .normal: return "ϊʔϚϧ" } } // ͬͪ͜͸NG(ϝϯό͕શͯྻڍ͞Ε͍ͯͳ͍) func getTypeString() -> String { switch self { case .fire: return "΄ͷ͓" case .grass: return "͘͞" case .water: return "Έͣ" } } // ͬͪ͜΋OK(ϝϯό͕શͯྻڍ͞Ε͍͍ͯͳ͍͕default͕͋Δ) func getTypeString() -> String { switch self { case .fire: return "΄ͷ͓" case .grass: return "͘͞" default: return “ϊʔϚϧ" } } // ͬͪ͜΋NG(default͕༨ܭ) func getTypeString() -> String { switch self { case .fire: return "΄ͷ͓" case .grass: return "͘͞" case .water: return "Έͣ" case .normal: return “ϊʔϚϧ" default: return "ϊʔϚϧ" } }

Slide 13

Slide 13 text

2-2. ஋ܕENUM

Slide 14

Slide 14 text

ςΩετ ஋ܕENUM? ▸ enumͷϝϯόʹInt, Float(or Double), String ͷ஋Ληοτͨ͠ Enumͷ͜ͱ ▸ จ๏͸ enum : Type { case member1 = … } ▸ ϝϯόʹ༩͑ΒΕͨ஋͸ variable.rawValue ͱ͍͏ܗͰऔಘ͕Մೳ ▸ ·ͨ EnumName(rawValue: ) ͱ͍͏ܗͰenumͷऔಘ͕ Մೳ

Slide 15

Slide 15 text

ςΩετ ࣮ࡍͷίʔυ(STRINGΛ࢖ͬͨ৔߹) // ϙέϞϯͷλΠϓʹจࣈΛ௥Ճ enum PokemonType: String { case fire = "΄ͷ͓" case grass = "͘͞" case water = "Έͣ" case normal = "ϊʔϚϧ" } var pokemonType = PokemonType(rawValue: "΄ͷ͓") ?? .normal // enumΛ࡞੒ print(pokemonType.rawValue)

Slide 16

Slide 16 text

2-3. ؔ࿈ܕENUM

Slide 17

Slide 17 text

ςΩετ ؔ࿈ܕENUM? ▸ Enumͷϝϯόʹରͯؔ͠࿈͢ΔܕΛࢦఆ͢Δ͜ͱͷͰ͖Δ ػೳ ▸ ஋ܕͷEnumͱ͸ҧ͍ϝϯόʹܕ͚ͩΛࢦఆ͢Δ ▸ จ๏͸ enum : Type { case member1(Type) … } ▸ ͲΜͳঢ়ଶ͔ͱ͍͏͜ͱ͚ͩͰͳͦ͘Εʹ෇ਵ͢Δ෇Ճ৘ใ Λ͚ͬͭ͘Δ͜ͱ͕Ͱ͖Δ

Slide 18

Slide 18 text

۩ମྫ

Slide 19

Slide 19 text

ςΩετ ͜ΕΛ࣮૷͍ͨ͠

Slide 20

Slide 20 text

ςΩετ ۩ମྫ func formattedPostDateTime(datetime: Int) -> String { // ࣮૷... } // Ҿ਺ʹͲΕ͘Β͍લ͔࣌ؒΛ༩͑ͯϑΥʔϚοτ formattedPostDateTime(datetime: 10)

Slide 21

Slide 21 text

Μʁ

Slide 22

Slide 22 text

ςΩετ ۩ମྫ func formattedPostDateTime(datetime: Int) -> String { // ࣮૷... } // Ҿ਺ʹͲΕ͘Β͍લ͔࣌ؒΛ༩͑ͯϑΥʔϚοτ formattedPostDateTime(datetime: 10) // <- "10" ͸ 10೔લʁ 10࣌ؒ લʁ 10෼લʁ 10ඵલʁ

Slide 23

Slide 23 text

୯ҐΛ༩͑ΔͷΛ ๨Ε͍ͯ·ͨ͠

Slide 24

Slide 24 text

ςΩετ ͜ΕͰOK…? // Ҿ਺ʹ࣌ؒͷ୯ҐΛ௥Ճ func formattedPostDateTime(datetime: Int, termType: Int) -> String { switch termType { case 0: return "\(datetime)೔લ" case 1: return "\(datetime)࣌ؒલ" // লུ... default: return "গ͠લ" } }
 // Ҿ਺ʹͲΕ͘Β͍લ͔࣌ؒΛ༩͑ͯϑΥʔϚοτ formattedPostDateTime(datetime: 10, termType: 0)

Slide 25

Slide 25 text

Μʁ

Slide 26

Slide 26 text

ςΩετ ͜ΕͰOK…? // Ҿ਺ʹ࣌ؒͷ୯ҐΛ௥Ճ func formattedPostDateTime(datetime: Int, termType: Int) -> String { switch termType { case 0: return "\(datetime)೔લ" case 1: return "\(datetime)࣌ؒલ" // লུ... default: return "গ͠લ" } }
 // Ҿ਺ʹͲΕ͘Β͍લ͔࣌ؒΛ༩͑ͯϑΥʔϚοτ formattedPostDateTime(datetime: 10, termType: 0) // <- 0 ͩͱ n೔લʹͳΔΜ͚ͩͬʁ n࣌ؒલʹͳΔʁ

Slide 27

Slide 27 text

੔਺Ͱ͸Θ͔Γ ʹ͍͘

Slide 28

Slide 28 text

ͦΕENUMͰ΍ Γ·ͤΜ͔ʁ

Slide 29

Slide 29 text

ςΩετ ͜ΕͰ΋͍͍͚Ͳ…? // ࣌ؒͷ୯ҐΛද͢EnumΛ௥Ճ enum DateTerm { case day case hours case minutes case seconds } // Ҿ਺ʹ౉࣌ؒ͢ͷ୯ҐΛInt͔ΒDateTermʹมߋ func formattedPostDateTime(datetime: Int, termType: DateTerm) -> String { switch termType { case .day: return "\(datetime)೔લ" case .hours: return "\(datetime)࣌ؒલ" // লུ... } } // Ҿ਺ʹͲΕ͘Β͍લ͔IntͱDateTermΛ༩͑ͯϑΥʔϚοτ formattedPostDateTime(datetime: 10, termType: .day)

Slide 30

Slide 30 text

Ͱ͖Ε͹Ҿ਺͸গͳ ͍ํ͕خ͍͚͠ Ͳɾɾɾ

Slide 31

Slide 31 text

ͦΕEnumͰ(ry

Slide 32

Slide 32 text

ςΩετ ؔ࿈ܕENUMΛ࢖͑͹ɾɾɾ // DateTermͷϝϯόʹؔ࿈͢Δܕ(ࠓճ͸Int)Λ௥Ճ enum DateTerm { case day(Int) case hours(Int) case minutes(Int) case seconds(Int) } // Ҿ਺ΛDateTermҰͭʹ·ͱΊΒΕͨʂ func formattedPostDateTime(from term: DateTerm) -> String { switch term { case .day(let value): return “\(value)೔લ" // <- value ʹ͸10͕ೖ͍ͬͯΔ case .hours(let value): return "\(value)࣌ؒલ" // লུ… } } // 10೔લͱϑΥʔϚοτ formattedPostDateTime(from: .day(10))

Slide 33

Slide 33 text

ςΩετ BEFORE // Ҿ਺ʹ࣌ؒͷ୯ҐΛ௥Ճ func formattedPostDateTime(datetime: Int, termType: Int) -> String { switch termType { case 0: return "\(datetime)೔લ" case 1: return "\(datetime)࣌ؒલ" // লུ... default: return "গ͠લ" } }
 // Ҿ਺ʹͲΕ͘Β͍લ͔࣌ؒΛ༩͑ͯϑΥʔϚοτ formattedPostDateTime(datetime: 10, termType: 0)

Slide 34

Slide 34 text

ςΩετ AFTER enum DateTerm { case day(Int) case hours(Int) case minutes(Int) case seconds(Int) } func formattedPostDateTime(from term: DateTerm) -> String { switch term { case .day(let value): return “\(value)೔લ" case .hours(let value): return "\(value)࣌ؒલ" // লུ… } } formattedPostDateTime(from: .day(10))