Lambdas
Procs med strikt aritet.
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}"
endreturn 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 demoKontrollera 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
returnlokal. - 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.
returnavslutar bara lambdan.lambda?skiljer den från en vanlig Proc.
area = ->(w, h) { w * h }
puts area.call(3, 4)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.