Ich versuche, Klassenvariablen für eine Klasseninstanz aus einer Datei zu füllen, und der einzige Weg, den ich herausgefunden habe, um das zu tun, ist so etwas wie
a=Thing.new
File.read("filename.ext").each_line do |arguments| #this will => things like @variable=str\n
eval( "a.instance_eval {" + arguments.chop + "}") #daher das umständliche eval eval chop
end
Das einzige Problem, das ich festgestellt habe, ist, dass ich beim Versuch, dies in einer Klassenmethode zu implementieren (um dies für mehrere Instanzen auf einmal zu tun), nicht weiß, wie ich das erreichen kann:
class Thing
attr_accessor :variable
def self.method
File.read("filename.ext").each_line do |arguments|
eval("instance.instance_eval{" + arguments.chop + "}") #diese Zeile
end
end
end
nämlich die Referenz auf die Instanz, die die Methode aufruft. self wird in diesem Fall nur Thing sein, also gibt es einen Weg, das zu tun? Viel wichtiger ist vielleicht ein besseres Gesamtkonzept. Ich habe Ruby erst gestern gelernt, also hatte ich noch keine Gelegenheit, einige der raffinierteren Tricks zu sehen, die es gibt, und meine Sprachreife ist noch ein wenig frisch.
Zum Kontext: Thing ist ein Charakter in einem Spiel, der seine Grundwerte aus einer Speicherdatei lädt.