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"]Sfida
PrincipianteLeggi un elenco di numeri interi separati da virgole. Stampa due righe:
- I numeri maggiori di
10(usaselect), uniti con, - I numeri non divisibili per
3(usareject), uniti con,
Per l'input 3,7,12,15,20, l'output è:
12, 15, 20
7, 20Provalo 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 ", "
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Panoramica dei metodi delle stringheInterpolazione di stringheIterare sulle stringheDividere e unireRiepilogo - Tessitore di stringhe4Blocchi, Proc e Lambda
Che cos’è un Block?do..end vs parentesi graffeLa keyword yieldParametri del BlockProc e LambdaRiepilogo - Iteratore personalizzato7Hash in Ruby - Parte 2
Hash.new con valori predefinitiIterare sugli hashHash annidatiUnire e trasformareRipasso - Contatore di frequenza10Progetto - Registri degli studenti
Panoramica del progettoAggiungere uno studente2Intervalli
Che cos'è un intervallo?Metodi degli intervalliIntervalli in Case / WhenRiepilogo - Esercitarsi con gli intervalli5La potenza di Enumerable
Select e RejectConcatenare MapReduce / Injectcount, all?, any?, none?group_by e partitionsort_by, min_by, max_byRiepilogo - Pipeline di datiEsercitati da solo: Compilatore Ruby online