Sådan negerer du en ' hvis lad ' betinget kontrol på hurtigt sprog


Bedste svar

Du kan ikke altid bruge guard, fordi det kræver en tidlig afslutning. Der er ingen negeret if let -konstruktion, men dit kodestykke viser ikke rigtig det interessante tilfælde, hvor det savnede mest.

Hvis din kode virkelig ikke har brug for date efter if, behøver du ikke bruge if let, bare test hvis udtryk er nil (note, kode forenklet til Swift3-ish syntaks for relevans og kortfattethed):

if UserDefaults.standard.objectForKey("first\_launch\_date") == nil {

UserDefaults.standard.set(date, forKey: "first\_launch\_date")

}

Men forudsat at din kode ønsker at bruge date efter if (ellers hvorfor giver du det et navn), så har du brug for noget lidt mere akavet, som ender op med noget i if tilfældet:

let date: Date

if let existingDate = UserDefaults.standard.objectForKey("first\_launch\_date") {

date = existingDate

} else {

date = Date()

UserDefaults.standard.set(date, forKey: "first\_launch\_date")

}

Sagen, der virkelig skuffer mig er dog, når du bruger if let i en kæde af else if. Ofte (næsten halvdelen af ​​tiden?) Ønsker logikken i kæden af ​​betingelser at teste for en række negativer, der ender med, at den ellers sag er den ene positive tilstand. Men hvis en af ​​betingelserne nødvendiggør en if let, er du tvunget til at udtrykke logikken som en test for positiv, idet den anden sag er negativ.

Eksempel i pseudokode:

if error {

failure

} else if unexpected-format {

failure

} else if parse-failed {

failure

} else if result is a {

handle result a

} else {

handle result b

}

Hvis implementering af dette hurtigt indebærer udpakning af et valgfrit under parsetesten, som if let result = parse() så skal du vi skal skæve logikken rundt fra fail-fail-success til fail-success-fail. Eksempel med en hurtigere pseudokode:

if error {

failure

} else if unexpected-format {

failure

} else if let result = parse() {

if result is a {

handle result a

} else {

handle result b

}

} else {

failure

}

Yuck. Potentielt vil en if not let tillade den oprindelige logik:

if error {

failure

} else if unexpected-format {

failure

} else if not let result = parse() {

failure // unlike if let, result not available to this code block

} else if result is a { // however it would be to everything after

handle result a

} else {

handle result b

}

Nogen skal skrive et forslag til hurtig udvikling.

Svar

  1. Tilmeld dig en gratis Apple Developer-konto
  2. Forstå fra i dag (4. juni 2016) Der er ingen tutorials til Swift 3.0, da den afsløres på WWDC i næste uge. Det tager mindst 3 måneder for forfattere at få nye bøger og selvstudier til Swift 3.0 klar. Undtagelsen er Erica Sadun, der er meget flittig og proaktiv med at få sine bøger op til den nyeste version af Swift.
  3. {Ny} Fra i dag (13. juni 2016) har Apple annonceret Playgrounds til iPAD, der ser ud som en meget god måde for begyndere at lære Swift på. OGSÅ har Apple en ny e-bog, der hedder \_App Development with Swift\_, som er en anden god ressource for den samlede sprogbegynder.
  4. Undgå noget på Swift 1.0 og hold dig væk fra de fleste oplysninger om 2.0 og 2.1 og prøv at finde information fra kilder i version 2.2 af Swift eller bedre. Forsøg også at undgå materiale med de nyeste oplysninger inden november 2015. Dette vil ændre sig om få måneder, efter at Swift 3.0 er mere tilgængelig. Der er nogle betydelige syntaks- og biblioteksændringer, og det kan være svært at prøve at følge tutorials skrevet i ældre versioner.
  5. Få en kopi af Apples Swift-manualer fra iBooks. Disse skal være de første ajourførte med Swift 3.0
  6. Gennemse disse manualer
  7. Hvis du har programmeret på andre sprog før, skal du være mere opmærksom på de Swift-specifikke konstruktioner som Apple og 3rd Party softwareeksempler vil sandsynligvis bruge dem.
  8. optællinger
  9. valgfri
  10. fejlkontrol
  11. lukninger (syntaks og conc eat kan være vanskelige at forstå)
  12. structs vs. klasser vs. protokoller vs. optællinger
  13. protokolorienteret design
  14. Referenceoptælling
  15. strenge
  16. generiske
  17. Swift-bibliotek
  18. funktionelle aspekter af sproget (relateret til lukninger og biblioteket)
  19. Gennemse og / eller køb 1–2 e-bøger (eller fysiske bøger) på Swift. Der er flere gode bøger.
  20. Der er meget mere information og tutorials skrevet, der forventer, at du skal programmere iOS vs. Mac OS
  21. Find ud af, om du er mere interesseret i spil eller produktivitet og koncentrer dig mere om en af ​​dem. Der er flere bøger og tutorials skrevet til spiludvikling, og på nogle måder synes jeg spil er et lettere sted at lære.
  22. Hvis du aldrig har skrevet nogen Apple-applikationer, er mit forslag at lære Swift uden at bekymre dig om meget om Objective-C. Ansvarsfraskrivelse: Jeg kan ikke lide Objective-C. Hvis du har en ældre kode i Objective-C, skal du under alle omstændigheder lære at bygge bro og inter-bruge Objective-C og Swift. Swift Tutorials giver grundlaget for det, du har brug for at vide, og du undgår det helt, fordi mange / de fleste Cocoa-biblioteker / -rammer alle er skrevet i Objective-C.
  23. Hvis du har et kreditkort eller betal ven, tilmeld dig på Lynda. com i en måned gratis, og se alle de videoer, du kan fra Simon Allardice og andre på Swift (og generelle programmeringskoncepter, hvis du også har brug for det.)
  24. Gør det samme på Pluralsight. com .
  25. Gennemse Apple Deve-webstedet for alle referencedokumenter, og hvordan du får adgang til dette fra x-Code. Forhåbentlig har du brugt X-Code før. Hvis ikke, skulle tutorials have givet tilstrækkelig information til at komme i gang. Dette er vigtigt.
  26. Gå til RayWenderlich. com og se alle de Swift-videoer og e-bøger, du kan. For at se alle bøgerne kan du tilmelde dig og / eller købe materialerne der. Sagsøg, du er godt udhvilet og gør selvfølgelig selvstudierne . Dette er nøglen.
  27. Se de tidligere Apple WWDC-videoer på Swift. Læs Apple Swift-manualerne mere omhyggeligt.
  28. Prøv at skrive din egen applikation. Dette viser, hvor du har steder, du har brug for til at gennemgå eller lære bedre.
  29. Prøv at følge iTunes University / Stanford Course om iOS-udvikling i Swift. Se om du kan følge med. Dette er ikke et kursus for begyndere i modsætning til hvad andre vil fortælle dig.
  30. Jeg har set mange, mange forskellige video-tutorials på Youtube. For mig er det eneste gode ved dem for det meste, at de er gratis. Når du har sammenlignet dem med de tutorials, jeg har nævnt tidligere, vil du spekulere på, hvorfor du spildte din tid med dem. Der er undtagelser, men du vil bruge meget tid på at spilde det ved at kigge igennem dem. Jeg sætter pris på, at folk vil oprette deres egne videoer. Jeg prøvede endda dette en gang. Så jeg ved, hvor meget energi de professionelle lægger i at gøre tingene klare og forståelige.
  31. Nu efter at have forsvundet de gratis Youtube-ting, se et par af disse videoer og se om de hjælper med at udfylde nogle manglende oplysninger eller ej . Det er godt at have alternative perspektiver.
  32. Abonner på Swift online nyhedsbreve. RayWenderlich har en god liste til at starte med.
  33. Læs nogle af mine og andres indlæg om dette emne. Nødvendigt at finde ud af, hvordan man fletter spørgsmål / svar.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *