Ruby Academy · Lekcja

Lambdy

Procki o ścisłej liczbie argumentów

Lekcja 3 z 413 kroki

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}"
end

return 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 demo

Sprawdzanie, 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.
  • return kończy tylko działanie lambdy.
  • lambda? odróżnia ją od zwykłego obiektu Proc.
area = ->(w, h) { w * h }
puts area.call(3, 4)
Bezpłatny start

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.

Wszystkie lekcje w tym kursie

  1. Powtórka bloków
  2. Procki
  3. Lambdy
  4. Domknięcia i zakres
← Powrót do Ruby Academy