Die Instanziierung einer Klasse in Ruby und Auffüllen Instanz-variable
Habe ich das Gefühl, mir fehlt etwas sehr einfach hier. Ich habe eine Klasse, die verbunden ist zu einem externen service. Ich möchte zum instanziieren, indem Sie entweder den Aufruf einer create-Methode oder eine Methode finden. Beide Methoden füllen einer Instanz-variable "@node" mit einem hash, indem entweder ein Knoten oder finden es.
Habe ich
class GenreInfluence
@@neo ||= Neography::Rest.new()
attr_accessor :node
def initialize
end
def self.create
@node = @@neo.create_node
self.new
end
def self.find(node_id)
@node = @@neo.get_node(node_id)
self.new
end
def get_hash
@node
end
Wenn ich kommentiere, was Los ist, ich es sehen kann, ist die Erstellung der Klasse und immer den richtigen hash zurück, aber:
theInstance = GenreInfluence.find(20)
theInstance.get_hash
Nur gibt es nil zurück. Warum ist der hash nicht gespeichert werden in die Instanz-variable"!?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann nicht festgelegt werden Instanz-Variablen in ein nicht-Beispiel (statisch oder Klasse) - Methode. Darüber hinaus sind beide Methoden sind der Rückgabe
self.new
, die effektiv liefert eine neue Instanz von der Klasse keine Instanz-Variablen festgelegt.Wie etwa den folgenden, erstellt eine neue Instanz der Klasse in der statischen Klassenmethoden, wird die variable auf diese Instanz, und dann gibt es (anstatt
self.new
):Sind Sie wieder
self.new
von Ihr find-Methode. Das ist eine neue Instanz vonGenreInfluence
mit einem frischen Satz von Instanzvariablen.Wie etwa
dann