Lambdy
Procki o ścisłej liczbie argumentów
Lambdy to bezpłatna lekcja Ruby Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Ruby Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Ruby Academy zawiera 4 lekcji w sumie.
Obiekty Proc o ścisłej liczbie argumentów
Lambda to szczególny rodzaj obiektu Proc, który zachowuje się bardziej jak zwykła metoda: sprawdza liczbę argumentów i standardowo obsługuje return. Należy jej używać, gdy potrzebne jest przewidywalne działanie przypominające metodę.
square = lambda { |x| x * x }
puts square.call(6)Lambda z operatorem strzałkowym
Składnia strzałkowa ->, nazywana potocznie „stabby lambda”, jest najczęstszym sposobem zapisywania lambd. Parametry umieszcza się w nawiasach.
add = ->(a, b) { a + b }
puts add.call(4, 5)Wywoływanie lambd
Lambdy obsługują te same sposoby wywoływania co obiekty Proc: .call, .() oraz [ ].
triple = ->(x) { x * 3 }
puts triple.call(2)
puts triple.(2)
puts triple[2]Ścisłe sprawdzanie argumentów
W przeciwieństwie do obiektu Proc lambda zgłasza ArgumentError, jeśli przekazano jej nieprawidłową liczbę argumentów. Pozwala to wcześnie wykrywać błędy.
greet = ->(name) { "Hi #{name}" }
puts greet.call("Sam")
begin
greet.call
rescue ArgumentError => e
puts "Error: #{e.message}"
endreturn pozostaje lokalny
return wewnątrz lambdy kończy tylko działanie lambdy, po czym wykonywanie jest kontynuowane. Odpowiada to zachowaniu metod.
def demo
l = -> { return 10 }
l.call
20 # this runs
end
puts demoSprawdzanie, czy obiekt jest lambdą
Zarówno obiekty Proc, jak i lambdy są instancjami Proc. Za pomocą lambda? można je rozróżnić.
l = ->(x) { x }
pr = proc { |x| x }
puts l.lambda?
puts pr.lambda?Lambdy bez argumentów
Gdy lambda nie przyjmuje parametrów, można pominąć nawiasy.
now = -> { Time.now.year }
puts "Year: #{now.call}"Lambdy wielowierszowe
Lambdy mogą zajmować wiele wierszy. Ostatnie wyrażenie jest zwracaną wartością.
classify = ->(n) {
return "zero" if n.zero?
n.positive? ? "positive" : "negative"
}
puts classify.call(0)
puts classify.call(-3)Przekazywanie lambd do metod
Podobnie jak obiekty Proc, lambdy można za pomocą & przekształcić w bloki, dzięki czemu można ich używać w map, select i podobnych metodach.
doubler = ->(n) { n * 2 }
p [1, 2, 3].map(&doubler)Lambdy jako wartości zwracane
Metoda może utworzyć i zwrócić lambdę, co pozwala tworzyć wyspecjalizowane funkcje na bieżąco.
def multiplier(by)
->(n) { n * by }
end
times10 = multiplier(10)
puts times10.call(5)Składanie wszystkiego w całość
Lambdy to obiekty Proc o ścisłym działaniu, przypominające metody:
- Tworzy się je za pomocą
lambda { }lub->(args) { }. - Wymuszają odpowiednią liczbę argumentów i zachowują lokalność
return. - Należy ich używać, gdy ważna jest poprawność lub gdy trzeba zwracać tworzone funkcje.
is_even = ->(n) { n.even? }
p [1, 2, 3, 4, 5, 6].select(&is_even)Szybki test
Proszę sprawdzić swoją znajomość lambd.
Podsumowanie
Omówiono lambdy:
- Lambda to obiekt Proc o ścisłym działaniu; zapisuje się ją za pomocą
->. - Wymusza prawidłową liczbę argumentów.
returnkończy tylko działanie lambdy.lambda?odróżnia ją od zwykłego obiektu Proc.
area = ->(w, h) { w * h }
puts area.call(3, 4)Ucz się Ruby dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 29
- Lekcje
- 109
Często zadawane pytania
Czy lekcja „Lambdy” jest bezpłatna?
Tak — pełny tekst „Lambdy” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Ruby Academy, przejdź na CoddyKit PRO. Kurs Ruby Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Lambdy”?
Procki o ścisłej liczbie argumentów Ćwiczysz Ruby Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Ruby Academy?
Nie wymagamy żadnego doświadczenia. Ruby Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Lambdy”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Ruby Academy?
Tak. Każda lekcja Ruby Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.