Ich lerne gerade Ruby und entschuldige mich, wenn dies zu neu für hier ist, aber ich kann das nicht aus dem Spitzhackenbuch herausarbeiten (wahrscheinlich nur nicht sorgfältig genug lesen). Wie auch immer, wenn ich ein Array wie dieses habe:
arr = [1,2,3,4,5]
... und ich möchte beispielsweise jeden Wert im Array mit 3 multiplizieren. Ich habe Folgendes herausgefunden:
arr.each {|item| item *= 3}
... wird mir nicht das bringen, was ich will (und ich verstehe warum, ich ändere das Array selbst nicht).
Was ich nicht verstehe, ist, wie man das ursprüngliche Array innerhalb des Codeblocks nach dem Iterator ändert. Ich bin sicher, das ist sehr einfach.
Verwenden Sie zum direkten Ändern des Arrays
arr.map! {|item| item*3}
. Verwenden Sie, um ein neues Array basierend auf dem Original zu erstellen (was häufig vorzuziehen ist)arr.map {|item| item*3}
. Tatsächlich denke ich immer zweimal darüber nach, bevor ich es benutzeeach
, weil es normalerweise eine Funktion höherer Ordnung gibtmap
,select
oderinject
das macht, was ich will.quelle
arr.map!{ destructive_op}
sich dauerhaft zu ändernarr
?quelle