Dies ist mein erster Beitrag und ich bin ziemlich neu in der Programmierung/dieser Seite, also entschuldige ich mich im Voraus, wenn ich etwas falsch mache/nervt.Sind diese Objekte? Warum sehen sie so aus, wenn ich sie drucke?
Ich wollte einen Weg finden, um Objekte zu definieren, ohne dies für jedes Objekt zu tun. Ich kam mit dieser
class Number
def initialize(name)
@name = name
end
def description
puts "I'm #{@name} "
end
end
a = ["zero", "one","two", "three", "four"]
for i in (0..5) do
a[i] = Number.new(a[i])
end
a[3].description
Ich hoffe, jemand kann mir sagen, welche Art von Frankensteins Monster ich erstellt habe?
Es scheint zu funktionieren, eine [3] .Description gibt "Ich bin drei" zurück, aber bedeutet das, dass drei/a [3] als eigenes Objekt und nicht als Element eines Arrays existiert?
Außerdem, wenn ich versuche zu tun:
puts a[3]
ich:
<Context::Number:0x000000009b7fd0 @name="three">, #
Um zu klären, ich möchte nur wissen, ob ich tatsächlich Objekte verwaltet hier zu schaffen, und warum auf der Erde, wenn Ich versuche, auf Elemente meines Arrays zuzugreifen Ich bekomme dieses seltsame Feedback (irgendwie scheint es Zugriff auf Speicher oder etwas, aber das ist ein wenig jenseits von mir)
Mein Dank im Voraus für alle wh o Antworten darauf.
Ja, ich meinte, puts a [3]. Danke übrigens, das ziemlich viel meiner Verwirrung aufräumt! wenn ich noch ein paar Fragen stellen kann? Gibt es einen Grund, warum sich die Objekt-ID jedes Mal ändert, wenn ich den Code ausführe? So geschieht es jedes Mal, wenn ich renne und mache 'ein [3]' auch, der Code, den ich in meine Frage eingefügt habe, war die Gesamtheit dessen, was ich geschrieben habe; irgendeine Idee, wie der Klassenname Kontext wurde? –
Objekt-IDs haben an und für sich keine Bedeutung (zum Beispiel werden sie nicht basierend auf dem Inhalt des Objekts berechnet) und existieren nur als ein Wert, mit dem Ruby das Objekt im Speicher identifizieren kann. Es besteht also keine Notwendigkeit oder Garantie, dass sie über die Laufzeit Ihres Programms konsistent sind. –
In Bezug auf 'Context' habe ich keine Ahnung ... ist dies der einzige Code in Ihrer Datei, und führen Sie die Datei direkt in der Befehlszeile aus, wie in' ruby my_file.rb'? Wenn nicht, wie? –