Each con indice
Fa parte della sezione Fondamenti del percorso Ruby di Coddy. Lezione 66 di 88.
A volte devi conoscere non solo l'elemento con cui stai lavorando, ma anche la sua posizione nell'array. Il metodo each_with_index di Ruby ti fornisce sia l'elemento sia il suo indice in una singola iterazione.
Ecco come funziona:
fruits = ["apple", "banana", "cherry"]
fruits.each_with_index do |fruit, index|
puts "#{index}: #{fruit}"
endQuesto produce:
0: apple
1: banana
2: cherryNota che il blocco ora accetta due variabili tra le barre verticali: prima viene l'elemento, seguito dall'indice. L'indice parte da 0, proprio come quando si accede direttamente agli elementi di un array.
Questo è particolarmente utile quando devi visualizzare elenchi numerati o tenere traccia delle posizioni:
tasks = ["Buy groceries", "Clean room", "Call mom"]
tasks.each_with_index do |task, i|
puts "Task #{i + 1}: #{task}"
endAggiungendo 1 all'indice, creiamo un elenco numerato intuitivo per le persone, che inizia da 1 invece che da 0. Il metodo each_with_index elimina la necessità di tenere traccia manualmente di una variabile contatore, rendendo il codice più pulito e meno soggetto a errori.
Sfida
FacileLeggi una singola riga di input contenente parole separate da virgole (ad es., apple,banana,cherry,date).
Suddividi l’input in un array di stringhe, poi usa each_with_index per stampare ogni elemento in un elenco numerato a partire da 1 (non da 0).
Ogni riga deve seguire questo formato: Item 1: apple
Ad esempio, se l’input è apple,banana,cherry,date, l’output dovrebbe essere:
Item 1: apple
Item 2: banana
Item 3: cherry
Item 4: dateSe l’input è red,green,blue, l’output dovrebbe essere:
Item 1: red
Item 2: green
Item 3: blueSe l’input è monday,tuesday,wednesday,thursday,friday, l’output dovrebbe essere:
Item 1: monday
Item 2: tuesday
Item 3: wednesday
Item 4: thursday
Item 5: fridaySe l’input è solo, l’output dovrebbe essere:
Item 1: soloProvalo tu
# Leggi l'input separato da virgole
input = gets.chomp
# Dividi l'input in un array
items = input.split(",")
# TODO: Usa each_with_index per stampare ogni elemento come elenco numerato
# Ricorda: l'indice parte da 0, ma devi visualizzare i numeri a partire da 1
# Formato: "Item 1: apple"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