Snart slipper Swift-udviklere for for-løkker i C-stil

Den klassiske for-løkke er snart fortid i Apples programmeringssprog Swift. I stedet kan udviklere bruge for-in-løkker eller while.

I version 3.0 af Apples programmeringssprog Swift er det slut med den klassiske måde at skrive for-løkker. Det er besluttet at godkende et forslag om at droppe den type for-løkker, som kendes fra C og et væld af andre programmeringssprog.

I stedet skal Swift-programmører benytte andre løkker til at opnå samme resultat. Det vil især være for-in-løkker eller while-løkker.

Argumentet mod den klassiske for-løkke er, at dens deklaration og form ikke passer ind i resten af Swift.

Den klassiske for-løkke i Swift ser således ud:

for var i=0; i <= 10; i++ {
print("Version2 siger hej")
}

Den samme løkke kan skrives ved hjælp af en for-in-løkke, hvor man i Swift kan bruge _ i stedet for at deklarere en variabel blot til at tælle iterationer af løkken.:

for _ in 0...10 {
print("Version2 siger hej")
}

Eller en while-løkke:

var i = 0
while i<=10 {
print("Version2 siger hej")
i++
}

Udviklerne af Swift-sproget erkender, at der findes visse typer for-løkker, der er mere besværlige at udtrykke uden den klassiske for-løkke, men at disse løkker er så sjældne i Swift-baserede applikationer, at det ikke retfærdiggør at beholde den C-agtige for-løkke i sproget.

Swift anvendes fortrinsvis til Apples forskellige platforme, hvor det blandt andet kan bruges til at skrive apps til iOS og tvOS. Tidligere på måneden blev Swift officielt sluppet fri som et open source-projekt af Apple.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (9)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Palle Due Larsen

Uden overhovedet at kende swift, vil jeg gætte på at string literals skal i anførselstegn, som her:
print("Version2 siger hej");

Og så vil jeg gætte på at
for _ in 0...10
skriver teksten 11 gange medmindre det ændres til
for _ in 0...<10.

Disclaimer: Der tages forbehold for at nissen også spiser min formattering.

  • 5
  • 0
Jesper Stein Sandal

Sådan kan det gå, når man ombestemmer sig midt i kodeeksemplerne (jeg glemte at tjekke min første for-løkke, efter jeg havde tjekket, at while-løkken og for-in-løkken begge talte det samme antal gange). Og jeg havde oprindeligt bare printet en integer, indtil jeg besluttede mig for at bruge _ og skrev for-in-løkken om, så derfor glemte jeg "".

Det er også for dårligt, at ingen af korrekturlæserne fangede fejlene. ;)

  • 2
  • 0
Troels Henriksen

Mærkeligt at Apple ikke har valgt at promovere funktionelle konstruktioner som Apply(), Map(), Filter(), Reduce() og Fold() frem for at amputere den gode gamle for-løkke, hvis spidsfindigheder de fleste programmører efterhånden kender til.

Det er stadigvæk rart med lidt syntaktisk sukker. En for-in løkke er jo reelt en uren sekventiel map, med hvilken alle de andre kan implementeres (undtagen apply - mener du virkelig en Lisp-style apply? ). Og i værste fald har man så vidt jeg kan se stadigvæk en helt basal while-løkke, som man også kan bruge til at implementere alle de andre.

  • 0
  • 0
Log ind eller Opret konto for at kommentere