Ruby Academy · Lektion

Lambdas

Procs med strikt aritet.

Lektion 3 av 413 steg

Lambdas är en gratis lektion i Ruby Academy på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Ruby Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Ruby Academy innehåller totalt 4 lektioner.

Procs med strikt arity

En lambda är en särskild typ av Proc som fungerar mer som en vanlig metod: den kontrollerar antalet argument och hanterar return på normalt sätt. Använd den när Ni vill ha ett förutsägbart, metodlikt beteende.

square = lambda { |x| x * x }
puts square.call(6)

Den pilformade lambdan

Pilsyntaxen ->, som kallas ”stabby lambda”, är det vanligaste sättet att skriva lambdor. Parametrarna anges inom parenteser.

add = ->(a, b) { a + b }
puts add.call(4, 5)

Anropa lambdor

Lambdor stöder samma anropssätt som Procs: .call, .() och [ ].

triple = ->(x) { x * 3 }
puts triple.call(2)
puts triple.(2)
puts triple[2]

Strikt argumentkontroll

Till skillnad från en Proc kastar en lambda ArgumentError om Ni skickar med fel antal argument. Det gör att fel upptäcks tidigt.

greet = ->(name) { "Hi #{name}" }
puts greet.call("Sam")
begin
  greet.call
rescue ArgumentError => e
  puts "Error: #{e.message}"
end

return förblir lokalt

En return inuti en lambda avslutar bara lambdan, varefter körningen fortsätter. Det överensstämmer med hur metoder fungerar.

def demo
  l = -> { return 10 }
  l.call
  20  # this runs
end
puts demo

Kontrollera om det är en lambda

Både Procs och lambdor är instanser av Proc. Använd lambda? för att skilja dem åt.

l = ->(x) { x }
pr = proc { |x| x }
puts l.lambda?
puts pr.lambda?

Lambdor utan argument

Utelämna parenteserna när en lambda inte tar några parametrar.

now = -> { Time.now.year }
puts "Year: #{now.call}"

Lambdor över flera rader

Lambdor kan sträcka sig över flera rader. Det sista uttrycket är returvärdet.

classify = ->(n) {
  return "zero" if n.zero?
  n.positive? ? "positive" : "negative"
}
puts classify.call(0)
puts classify.call(-3)

Skicka lambdor till metoder

Liksom Procs omvandlas lambdor till block med &, så de kan användas med map, select och liknande metoder.

doubler = ->(n) { n * 2 }
p [1, 2, 3].map(&doubler)

Lambdor som returvärden

En metod kan skapa och returnera en lambda, vilket gör det möjligt att skapa specialiserade funktioner direkt.

def multiplier(by)
  ->(n) { n * by }
end
times10 = multiplier(10)
puts times10.call(5)

Så hänger det ihop

Lambdor är strikta, metodlika Procs:

  • Skriv dem med lambda { } eller ->(args) { }.
  • De kräver rätt arity och håller return lokal.
  • Använd dem när korrekthet är viktig eller när Ni bygger funktioner som ska returneras.
is_even = ->(n) { n.even? }
p [1, 2, 3, 4, 5, 6].select(&is_even)

Snabbtest

Testa er förståelse av lambdor.

Sammanfattning

Ni har lärt er om lambdor:

  • En lambda är en strikt Proc som skrivs med ->.
  • Den kräver rätt antal argument.
  • return avslutar bara lambdan.
  • lambda? skiljer den från en vanlig Proc.
area = ->(w, h) { w * h }
puts area.call(3, 4)
Gratis att börja

Lär dig Ruby med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
29
Lektioner
109

Vanliga frågor

Är lektionen ”Lambdas” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Ruby Academy, inklusive ”Lambdas”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Ruby Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Lambdas”?

Procs med strikt aritet. Ni övar på Ruby Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Ruby Academy?

Du behöver inga förkunskaper. Utbildningen i Ruby Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Lambdas”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Ruby Academy-lektionen?

Ja. Varje Ruby Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Repetition av block
  2. Procs
  3. Lambdas
  4. Closures och räckvidd
← Tillbaka till Ruby Academy