Map e collect
Fa parte della sezione Fondamenti del percorso Ruby di Coddy. Lezione 68 di 88.
Sebbene each sia ottimo per eseguire azioni sugli elementi, a volte vuoi trasformare un array in uno nuovo. Il metodo map (chiamato anche collect) fa esattamente questo: crea un nuovo array contenente i risultati dell'esecuzione del tuo blocco su ogni elemento.
numbers = [1, 2, 3, 4]
doubled = numbers.map { |n| n * 2 }
puts doubled # Restituisce: 2, 4, 6, 8La differenza principale rispetto a each è che map restituisce un nuovo array con i valori trasformati. L'array originale rimane invariato.
Ecco un esempio pratico che converte le temperature da Celsius a Fahrenheit:
celsius = [0, 20, 100]
fahrenheit = celsius.map { |c| c * 9 / 5 + 32 }
puts fahrenheit # Output: 32, 68, 212Puoi anche usare map con le stringhe:
names = ["alice", "bob"]
capitalized = names.map { |name| name.capitalize }
puts capitalized # Stampa: Alice, BobI metodi map e collect sono identici. Ruby fornisce entrambi i nomi, quindi puoi usare quello che si legge meglio nel tuo codice. La maggior parte degli sviluppatori Ruby preferisce map perché è più breve.
Sfida
FacileLeggi una singola riga di input contenente numeri interi separati da virgole (ad es., 2,4,6,8,10).
Suddividi l'input in un array di numeri interi, quindi usa il metodo map per creare un nuovo array in cui ogni numero è elevato al quadrato (moltiplicato per se stesso).
Stampa ogni elemento del nuovo array dei quadrati su una riga separata.
Ad esempio, se l'input è 2,4,6,8,10, l'output dovrebbe essere:
4
16
36
64
100Se l'input è 1,2,3,4,5, l'output dovrebbe essere:
1
4
9
16
25Se l'input è 3,7,11, l'output dovrebbe essere:
9
49
121Se l'input è 10, l'output dovrebbe essere:
100Provalo tu
# Leggi l'input separato da virgole
input = gets.chomp
# TODO: Scrivi il tuo codice qui sotto
# 1. Dividi la stringa di input in un array di numeri interi
# 2. Usa il metodo map per elevare al quadrato ogni numero
# 3. Stampa ogni numero elevato al quadrato su una riga a séQuesta lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori Parte 2
Operatori logici Parte 1Operatori logici Parte 2Riepilogo - Logica sempliceOperatori logici Parte 3Operatori logici Parte 47Calcolatore per dividere il conto
Messaggio di benvenutoAcquisire input dall'utente10FizzBuzz con un colpo di scena
Panoramica del giocoIl metodo FizzBuzz2Variabili e tipi di dato
Numeri e variabiliTipo di dato stringaTipo di dato booleanoTipo di dato SymbolVerifica dei tipi di datoConvenzioni di denominazioneRiepilogo - Creazione di variabili5Strutture decisionali
Istruzione ifIf-ElseRipasso - Calcolatrice sempliceIf-Else annidatoIstruzione unless8Cicli
Ciclo for con intervalliCiclo whilebreaknextRiepilogo - FattorialeCiclo timesCiclo untilCicli annidatiRiepilogo - Input dinamico3Operatori, parte 1
Operatori aritmeticiOperatore moduloScorciatoie aritmeticheRipasso: matematica sempliceOperatori di confronto6Input/Output di base
Output con putsOutput con print e pOutput con variabiliInput con getsMetodo chompConversione di tipoRipasso - Calcolatore dell'etàRipasso - Vero o falsoEsercitati da solo: Compilatore Ruby online