Mit schieben, hinzufügen einer Zeichenfolge in ein array in ruby
Als Teil des online-Ruby-tutorial, muss ich erstellen Sie ein text-basiertes Spiel. Eine Anforderung ist, dass ich require
ziehen in eine andere Datei. Das habe ich bereits getan, sowie include
das Modul, welches eine Methode. Aber, ich kann nicht produzieren die Ergebnisse, die ich will. Hier ist meine Datei mit dem Modul:
module Inventory
def Inventory.inventory(item)
items = Array.new
if item == "show"
items.inspect
else
items << item
end
end
end
Möchte ich die parameter (item)
zu dem array Hinzugefügt werden items
als eine Zeichenfolge, die kann inspected
wenn ich den pass der "show"
argument, um es.
So zum Beispiel, möchte ich hinzufügen, dass ein 'bat' um das Inventar so nenne ich Inventory.inventory("bat")
. Später möchte ich noch andere Dinge. Aber wenn ich rufe Inventory.inventory("show")
es nicht alles zeigen.
Hab ich verbrachte die Tage auf der Suche durch viele andere tutorials und Hunderte Fragen hier, aber noch nicht bekommen kann es arbeiten. Ich bin wohl etwas nicht zu verstehen wirklich elementar, so seien Sie bitte freundlich zu mir, wie ich Lerne immer noch.
Ist es der Weg, ich bin das hinzufügen zu einem array? Die Art, wie ich versuche, es zu zeigen? Oder muss ich nicht verstehen, wie die Methoden und Argumente?
Du musst angemeldet sein, um einen Kommentar abzugeben.
können Sie Dylans Antwort, wenn Sie wollen, gehen mit Beispiel-Ansatz oder Sie können verwenden Sie Klassen-Variablen.
Das problem mit Ihrem code, den Sie initialisieren
items
lokalen Variablen bei jedem Aufrufinventory
.Hier ist eine version, die beibehalten wird, die Elemente in einer Klasse variable:
dies ist die Herstellung
||=
ist ein null-guard. es wird initialisiert@@items
nur, wenn es null ist.p
,print
,puts
ist für das senden Zeug auf stdout.Diesem wäre machen viel mehr Sinn als eine Klasse. Auf diese Weise können Sie speichern Sie die Elemente in einer Instanz-variable, die beibehalten wird, während mehrere Aufrufe
add
,show
usw. Sie können natürlich diese Klasse in eine eigene Datei und schließen Sie es.Das Problem ist, dass Ihre Elemente-array wird neu erstellt jedes mal, wenn diese Methode aufgerufen wird, so gibt es keine Persistenz zwischen Methodenaufrufen für das, was übergeben wird, in das array. Dylan Markow-Antwort zeigt Ihnen, wie Sie mit Instanz-Variablen beibehalten von Werten zwischen Methodenaufrufen.