Menu
Coddy logo textTech

Select i Reject

Część sekcji Logika i przepływ programu ścieżki Ruby w Coddy. Lekcja 21 z 56.

Metoda select zwraca nową tablicę zawierającą tylko te elementy, dla których blok zwraca wartość prawdziwą. Tak Ruby zapisuje „filtrowanie”.

numbers = [1, 2, 3, 4, 5, 6]
evens = numbers.select { |n| n.even? }
puts evens.inspect   # [2, 4, 6]

reject działa odwrotnie — pozostawia wszystko, dla czego blok zwraca false:

odds = numbers.reject { |n| n.even? }
puts odds.inspect    # [1, 3, 5]

Obie zwracają nową tablicę; oryginał pozostaje nietknięty.

Blok to po prostu predykat — zadziała wszystko, co daje wartość true lub false:

words = ["hi", "hello", "hey", "yo"]
long  = words.select { |w| w.length >= 3 }
puts long.inspect    # ["hello", "hey"]
challenge icon

Wyzwanie

Początkujący

Wczytaj listę liczb całkowitych oddzielonych przecinkami. Wypisz dwa wiersze:

  1. Liczby większe niż 10 (użyj select), połączone za pomocą ,
  2. Liczby niedpodzielne przez 3 (użyj reject), połączone za pomocą ,

Dla danych wejściowych 3,7,12,15,20 wynikiem jest:

12, 15, 20
7, 20

Spróbuj swoich sił

numbers = gets.chomp.split(",").map(&:to_i)

# TODO: wiersz 1, liczby > 10, połączone za pomocą ", "
# TODO: wiersz 2, liczby NIEpodzielne przez 3, połączone za pomocą ", "
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator Ruby online