Upgrade to Pro — share decks privately, control downloads, hide ads and more …

EnumのRawValueで好きな型を使いたい

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →
Avatar for hmhm hmhm
April 14, 2018
86

 EnumのRawValueで好きな型を使いたい

Avatar for hmhm

hmhm

April 14, 2018

Transcript

  1. Enum Enumʢྻڍܕʣ enum CompassPoint { case north case south case

    east case west } let south = CompassPoint.south
  2. Enum > Raw Value Raw Value ‣ έʔεʹରԠͨ͠஋Λ࣋ͨͤΒΕΔ ‣ ஋ͷܕ͸શͯಉ͡

    ‣ ஋ͷܕ ‣ จࣈྻϦςϥϧɿCharacterܕɾStringܕ ‣ ਺஋ϦςϥϧɿIntܕɾDoubleܕ
  3. Raw Value enum CompassPoint: String { case north case south

    case east case west } let south = CompassPoint.south.rawValue // "south" Enum > Raw Value
  4. Custom Raw Value struct RadioActor { let name: String }

    enum Popteamepic { case Popuko case Pipimi } Enum > Raw Value
  5. Custom Raw Value struct RadioActor { let name: String }

    enum Popteamepic { case Popuko case Pipimi } extension Popteamepic: RawRepresentable { typealias RawValue = RadioActor Enum > Raw Value
  6. Custom Raw Value struct RadioActor { let name: String }

    enum Popteamepic { case Popuko case Pipimi } extension Popteamepic: RawRepresentable { typealias RawValue = RadioActor var rawValue: RadioActor { switch self { case .Popuko: return RadioActor(name: "ߐݪਖ਼࢜") case .Pipimi: return RadioActor(name: "େ௩๕஧") } } Enum > Raw Value
  7. Custom Raw Value struct RadioActor { let name: String }

    enum Popteamepic { case Popuko case Pipimi } extension Popteamepic: RawRepresentable { typealias RawValue = RadioActor var rawValue: RadioActor { switch self { case .Popuko: return RadioActor(name: "ߐݪਖ਼࢜") case .Pipimi: return RadioActor(name: "େ௩๕஧") } } init?(rawValue: RadioActor) { switch rawValue.name { case "ߐݪਖ਼࢜": self = .Popuko case "େ௩๕஧": self = .Pipimi default: return nil } } } Enum > Raw Value
  8. Custom Raw Value let popuko = Popteamepic.Popuko.rawValue // RadioActor let

    name = popuko.name // "ߐݪਖ਼࢜" let radioActor = RadioActor(name: "େ௩๕஧") let pipimi = Popteamepic(rawValue: radioActor) // Popteamepic.Pipimi Enum > Raw Value
  9. ςΩετ ·ͱΊ ▸ Enum > Raw Value ▸ จࣈྻɾ਺ࣈϦςϥϧ͕࢖༻Մೳ ▸

    EnumΛRawRepresentableʹ४ڌͤ͞Δ ▸ ࣗ࡞Ϋϥεɾߏ଄ମ΋࢖༻͢Δ͜ͱ͕Ͱ͖Δ