Concatenare Map
Fa parte della sezione Logica e flusso del percorso Ruby di Coddy. Lezione 22 di 56.
Hai incontrato map nei fondamenti: crea un nuovo array trasformando ogni elemento. Il suo vero potere emerge quando lo concateni con select, reject e simili.
Ogni metodo restituisce un array, quindi chiamare un altro metodo sul risultato permette di continuare:
numbers = [1, 2, 3, 4, 5]
result = numbers
.select { |n| n.odd? }
.map { |n| n * 10 }
puts result.inspect # [10, 30, 50]Leggi la catena dall’alto verso il basso: inizia con i numeri, tieni quelli dispari, moltiplica ciascuno per 10. Nessuna variabile temporanea, nessun ciclo.
La scorciatoia &:method_name funziona ogni volta che il blocco chiama un solo metodo:
["hi", "yo"].map { |s| s.upcase } # ["HI", "YO"]
["hi", "yo"].map(&:upcase) # ["HI", "YO"] (uguale)Questa forma abbreviata è ovunque nel codice Ruby. Riconoscila quando la vedi.
Sfida
FacileLeggi un elenco di parole separate da virgole. Stampa su una sola riga le parole più lunghe di 3 caratteri, in maiuscolo, unite con , .
Realizza il tutto come un'unica catena: select quelle più lunghe, applica loro map con &:upcase, poi usa join.
Per l'input hi,hello,yo,coddy,sup, l'output è:
HELLO, CODDYProvalo tu
words = gets.chomp.split(",")
# TODO: concatena select + map(&:upcase) + join
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