Swift Academy · leksjon

Funksjoner som førsteklasses verdier

Lagre funksjoner i variabler, send dem som argumenter og returner dem fra funksjoner.

Leksjon 4 av 412 trinn

Funksjoner som førsteklasses verdier er en gratis leksjon i Swift Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Swift Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Swift Academy inneholder totalt 4 leksjoner.

Velkommen

I Swift er funksjoner førsteklasses verdier – de kan lagres i variabler, sendes som argumenter, returneres fra andre funksjoner og nøstes inne i andre funksjoner.

Funksjonstyper

Alle funksjoner har en type som bestemmes av parameter- og returtypene: ```swift func add(_ a: Int, _ b: Int) -> Int { a + b } let operation: (Int, Int) -> Int = add print(operation(3, 4)) // 7 ``` Typen til `add` er `(Int, Int) -> Int`.

Sende funksjoner som argumenter

```swift func apply(_ f: (Int) -> Int, to value: Int) -> Int { f(value) } func double(_ n: Int) -> Int { n * 2 } print(apply(double, to: 5)) // 10 ``` Dette er grunnlaget for høyereordensfunksjoner som `map` og `filter`.

Returnere funksjoner

```swift func multiplier(by factor: Int) -> (Int) -> Int { return { value in value * factor } } let triple = multiplier(by: 3) print(triple(7)) // 21 ``` Når en funksjon returneres, opprettes en *closure* som fanger opp `factor`.

Nøstede funksjoner

Funksjoner kan defineres inne i andre funksjoner: ```swift func chooseStep(goForward: Bool) -> (Int) -> Int { func forward(_ n: Int) -> Int { n + 1 } func backward(_ n: Int) -> Int { n - 1 } return goForward ? forward : backward } let step = chooseStep(goForward: true) print(step(3)) // 4 ```

Closures som kortform

Anonyme closure-uttrykk kan brukes i stedet for alle funksjonstyper: ```swift let square: (Int) -> Int = { $0 * $0 } print(square(6)) // 36 let doubled = [1, 2, 3].map { $0 * 2 } // [2, 4, 6] ``` `$0` viser til det første argumentet i kortformen for closures.

Lagre funksjoner i samlinger

```swift let operations: [(Int, Int) -> Int] = [ { $0 + $1 }, { $0 - $1 }, { $0 * $1 } ] for op in operations { print(op(10, 3)) } // 13, 7, 30 ```

Syntaks for trailing closure

Når det siste argumentet er en funksjon, kan det skrives utenfor parentesene: ```swift func withLogging(_ label: String, action: () -> Void) { print("Start: \(label)") action() print("End: \(label)") } withLogging("fetch") { fetchData() } ```

Funksjonsidentitet og likhet

To funksjonsverdier kan ikke sammenlignes med `==` i Swift – funksjoner implementerer ikke Equatable: ```swift // let same = add == add ❌ ``` Hvis funksjoner må sammenlignes, kan de pakkes inn i en struct eller class som implementerer Equatable.

Mønster for currying

Simuler currying ved å returnere delvis anvendte funksjoner: ```swift func add(_ a: Int) -> (Int) -> Int { { b in a + b } } let add5 = add(5) print(add5(3)) // 8 print(add5(10)) // 15 ``` Dette er nyttig for å opprette spesialiserte funksjoner fra generelle funksjoner.

Kort kontrollspørsmål

Hvilken funksjonstype har en funksjon som tar to `Int`-verdier og returnerer en `Int`?

Oppsummering

Viktigste punkter: • Funksjoner har typer som `(ParamTypes) -> ReturnType` • Lagre dem i variabler, send dem som argumenter og returner dem fra funksjoner • Closures (`{ }`) er anonyme funksjonsverdier • Syntaks med trailing closure gjør kallsteder ryddigere • Når funksjoner returneres fra funksjoner, opprettes closures som fanger opp variabler Neste: leksjonen om optional chaining og utpakking.
Gratis å komme i gang

Lær deg Swift med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
122
Leksjoner
409

Ofte stilte spørsmål

Er leksjonen «Funksjoner som førsteklasses verdier» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Swift Academy, inkludert «Funksjoner som førsteklasses verdier», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Swift Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Funksjoner som førsteklasses verdier»?

Lagre funksjoner i variabler, send dem som argumenter og returner dem fra funksjoner. Du øver på Swift Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Swift Academy?

Ingen tidligere erfaring er nødvendig. Swift Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Funksjoner som førsteklasses verdier»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Swift Academy-leksjonen?

Ja. Alle Swift Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Argumentetiketter og parameternavn
  2. Standard- og variadiske parametere
  3. In-Out-parametere og flere returverdier
  4. Funksjoner som førsteklasses verdier
← Tilbake til Swift Academy