Menu
Coddy logo textTech

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}"
end

Questo produce:

0: apple
1: banana
2: cherry

Nota 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}"
end

Aggiungendo 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.

challenge icon

Sfida

Facile

Leggi 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: date

Se l’input è red,green,blue, l’output dovrebbe essere:

Item 1: red
Item 2: green
Item 3: blue

Se 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: friday

Se l’input è solo, l’output dovrebbe essere:

Item 1: solo

Provalo 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"
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 Fondamenti

Esercitati da solo: Compilatore Ruby online