Ruby Academy · Lekcja

Powtórka bloków

Przekazywanie bloków do metod

Lekcja 1 z 413 kroki

Powtórka bloków to bezpłatna lekcja Ruby Academy na CoddyKit. To lekcja 1 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.

Przekazywanie bloków do metod

Blok to fragment kodu przekazywany metodzie. Wiele metod Ruby, takich jak each, przyjmuje blok i wykonuje go za Ciebie. Bloki są podstawą wyrazistego stylu Ruby.

[1, 2, 3].each do |n|
  puts n * 10
end

Dwie składnie bloków

Używaj do ... end w przypadku bloków wielowierszowych, a nawiasów klamrowych { } w przypadku krótkich instrukcji zapisanych w jednym wierszu. Działają tak samo.

[1, 2, 3].each { |n| puts n }

Parametry bloku

Nazwy między pionowymi kreskami | | są parametrami bloku. To metoda decyduje, jakie wartości zostaną do nich przekazane.

{ a: 1, b: 2 }.each do |key, value|
  puts "#{key} = #{value}"
end

yield wywołuje blok

Wewnątrz metody yield wykonuje przekazany blok. Aby używać yield, nie trzeba deklarować bloku na liście parametrów.

def twice
  yield
  yield
end
twice { puts "Hi" }

yield z argumentami

Przekazuj wartości do bloku za pomocą yield. Trafiają one do parametrów bloku.

def greet_each(names)
  names.each { |n| yield n }
end
greet_each(["Ann", "Bo"]) { |name| puts "Hello #{name}" }

block_given?

Wywołanie yield bez bloku powoduje błąd. Najpierw użyj block_given?, aby blok był opcjonalny.

def maybe
  if block_given?
    yield
  else
    puts "No block provided"
  end
end
maybe
maybe { puts "Block ran" }

Bloki zwracają wartości

Blok oblicza wartość swojego ostatniego wyrażenia. Metody takie jak map zbierają te zwracane wartości do nowej tablicy.

squares = [1, 2, 3, 4].map { |n| n * n }
p squares

Wartość yield

Sam operator yield zwraca wartość bloku, więc metoda może przekształcać dane wejściowe za pomocą bloku dostarczonego przez wywołującego.

def transform(x)
  yield x
end
result = transform(5) { |n| n + 100 }
puts result

Przechwytywanie bloku za pomocą &

Poprzedź ostatni parametr znakiem &, aby przechwycić blok jako obiekt Proc, który możesz zapisać lub przekazać dalej.

def run(&block)
  block.call
end
run { puts "Called via block.call" }

Parametry numerowane

We współczesnym Ruby można pominąć nadawanie nazwy pojedynczemu parametrowi bloku, używając _1 (lub it w Ruby 3.4+). Przydaje się to w krótkich blokach.

[10, 20, 30].each { puts _1 }

Składanie wszystkiego w całość

Bloki pozwalają metodom przyjmować zachowanie:

  • do...end lub { } służą do przekazania bloku.
  • yield go wykonuje, a block_given? sprawdza, czy go przekazano.
  • &block zamienia go w obiekt wielokrotnego użytku.
def repeat(times)
  return unless block_given?
  times.times { |i| yield i }
end
repeat(3) { |i| puts "Step #{i}" }

Szybki test

Proszę sprawdzić swoją znajomość bloków.

Podsumowanie

Omówiono bloki:

  • Bloki przekazują zachowanie do metod za pomocą do...end lub { }.
  • yield wykonuje blok i zwraca jego wartość.
  • block_given? sprawia, że przekazanie bloku jest opcjonalne.
  • &block przechwytuje blok jako obiekt Proc.
def wrap
  puts "<<"
  yield
  puts ">>"
end
wrap { puts "content" }
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 „Powtórka bloków” jest bezpłatna?

Tak — pełny tekst „Powtórka bloków” 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 „Powtórka bloków”?

Przekazywanie bloków do metod Ć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 1 z 4.

Ile czasu zajmuje lekcja „Powtórka bloków”?

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