Ändern Eintrag in einem array, während die Schleife durch es

arr = ["red","green","blue","yellow"]

arr.each do |colour|
  if colour == "red"
    colour = "green"
  end
end

puts arr.inspect

Den obigen code-Ausgänge:

["red", "green", "blue", "yellow"]

aber warum nicht?

["green", "green", "blue", "yellow"]

Dachte ich, die Farbe war ein Verweis auf das aktuelle element im array, und was auch immer ich Tat, es würde bewirken, dass die array-Elemente?

  • Ich bearbeitet einen Kommentar Balg einschließlich mutation Objekte mit, die Sie verwenden können, index und erhalten gewünschten Ergebnis: arr.jede { |Farbe| colour[0..Farbe.length] = 'grün' if Farbe == 'red' }
InformationsquelleAutor pingu | 2011-02-21
Schreibe einen Kommentar