#Alle Kan Kode Lektion 25 - Enums
Disclaimer / Ansvarsfraskrivelse Alt du deler og siger mm bliver optaget. Lad være med at dele privat oplysninger, adgangskoder, kreditkort oplysninger osv. Andre vil komme til at se og høre det du siger, og det vil ikke være rigtigt at klippe det ud af lektionen bagefter
I tilfælde af CRASH Lektionen er optaget Live med kursister Hvis min computer crasher. Bliv i Zoom. Jeg kommer på så hurtig jeg kan.
Forrige lektion Vi lærte om Guard som er en slags omvendt if Vi lærte om Scope, som betyder hvor variabler lever.
Agenda Enums - Grundlæggende Enums - Udvidet
Sådan stiller du spørgsmål Undervejs i lektionen er jeres mikrofoner slukkede. Hvis du har spørgsmål så skriv i chatten eller brug ræk hånden op. Jeg vil forsøge at tage jeres spørgsmål i klumper så vi ikke får for mange afbræk i flowet Jeg åbner jeres mikrofon efter behov, hav gerne hovedtelefoner på og hvis muligt prøv at være i et lokale uden for meget baggrundsstøj.
Spørgsmål
Modul 3 Lektion 25: Enumerations (Enums)
Enums Enums bruges til typer med faste værdier. Jan, Feb, Marts, April, Maj, Juni. Man, Tirs, Ons, Tors, Fre Rød, Gul, Grøn (Trafiklys får ikke flere farver) Altså FASTE VÆRDIER vi vil spørge på uden at skulle spørge på RØD, GUL, GRØN tekst værdier.
Enums
Enums enum CompassPoint { case north case east case south case west }
Enums enum CompassPoint { case north, east, south, west } var compassheading = CompassPoint.west var compassheading: CompassPoint =.west compassheading =.north
Spørge på værdier let compassheading: CompassPoint =.west switch compassheading { case.north: print( Afsted mod nord") case.east: print( Til det mytiske østen") case.south: print( Sydpå ned i varmen") case.west: print( Til det vilde vest det går") }
Spørge med en if let compassheading: CompassPoint =.west if compassheading ==.west { print( Jeg ridder mod vest.. På min hest ) }
Fordele ved enum typer struct Movie { var name: String var releaseyear: Int var genre: String } let movie = Movie(name: Aliens, releaseyear: 1986, genre: "SejFi") Skriv i chatten når du har spottet en fejl.
Fordele ved enum typer enum Genre { case animated, action, scifi, thriller } struct Movie { var name: String var releaseyear: Int var genre: Genre } let movie = Movie(name: Aliens", releaseyear: 2016, genre:.scifi) Lad os taste eksemplet i en playgrounds.
Spørgsmål til grundlæggende?
Udvidet : Eksemplet enum Måned { } case jan,feb,mar,apr,maj,jun,jul,aug,sep,okt,nov,dec var minfødselsmåned = Måned.okt print (minfødselsmåned) Start en playground og tast ovenstående ind som udgangpunkt.
Print var minfødselsmåned = Måned.okt print (minfødselsmåned) Oktober Hvad gør jeg hvis print skal skrive min måned pænt? - Giv dit bud i chatten.
Hvad så vi i Xcode enum Måned : CustomStringConvertible { case jan,feb,mar,apr,maj,jun,jul,aug,sep,okt,nov,dec Enum er en type En type kan implementere CustomStringConvertible protokollen Fuldstændig ligesom med struct og class } var description: String { switch self { case.jan : return "Januar" case.feb : return "Februar" case.mar : return "Marts" case.apr : return "April" case.maj : return "Maj" case.jun : return "Juni" case.jul : return "Juli" case.aug : return "August" case.sep : return "September" case.okt : return "Oktober" case.nov : return "November" case.dec : return "December" } }
Spørgsmål?
Fortløbende
RawValue Enums kan have en RawValue RawValue er den værdi det logiske udfald har. Smart hvis man vil gemme en fysisk værdi ud fra en logisk værdi Smart hvis man feks vil lave måned om til et tal. Jan = 1, Feb = 2 osv. Det ser vi i Xcode hvordan vi kan lave.
Hvad så vi i Xcode Vi kunne erklære at vores Enum var en Int, og give den et fortløbende nummer (rawvalue) Vi kan lave en instans ud fra et rawvalue (Jesus Fødsels Måned = 12) Vi kan tildele rawvalues til alle enum udfald, og på den måde indkapsle en rigtig værdi med en logisk værdi.
Spørgsmål til Raw Value
enums er typer enums er typer. Enums kan have funktioner ligesom class og struct. Det ser vi et eksempel på i playgrounds.
Func og Guard func næstemåned() -> Måned { let næste = self.rawvalue + 1 guard let næstemåned = Måned(rawValue: næste) else { } return Måned.jan } return næstemåned Vi lavede en funktion, som brugte Guard til at sikre os at vi havde en værdi der kunne returneres.
Spørgsmål til funktioner på enums
Lidt mere info Man kan tilknytte associerede værdier til enum udfald Ikke kun raw value men flere værdier. Det er avanceret og jeg kan henvise til Apple online dokumentation
Modul 3 Lektion 25 Øvelser: Enums Løs opgaverne i 025-Enums.playground
Vi ses næste uge. God påske 2017 Apple Inc. This work is licensed by Apple Inc. under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International license.