Menu
Coddy logo textTech

Select e Reject

Fa parte della sezione Logica e flusso del percorso Ruby di Coddy. Lezione 21 di 56.

Il metodo select restituisce un nuovo array contenente solo gli elementi per i quali il blocco restituisce un valore truthy. È il modo in cui Ruby scrive «filter».

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

reject è l'opposto: mantiene tutto ciò per cui il blocco restituisce false:

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

Entrambi restituiscono un nuovo array; l'originale rimane invariato.

Il blocco è semplicemente un predicato: va bene qualsiasi cosa che restituisca true o false:

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

Sfida

Principiante

Leggi un elenco di numeri interi separati da virgole. Stampa due righe:

  1. I numeri maggiori di 10 (usa select), uniti con ,
  2. I numeri non divisibili per 3 (usa reject), uniti con ,

Per l'input 3,7,12,15,20, l'output è:

12, 15, 20
7, 20

Provalo tu

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

# TODO: riga 1, numbers > 10, uniti con ", "
# TODO: riga 2, numbers NON divisibili per 3, uniti con ", "
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Ruby online