ファイルからクラスインスタンスのクラス変数を入力しようとしていますが、これを行う方法を理解できた唯一の方法は次のようなものです
a=Thing.new
File.read("filename.ext").each_line do |arguments| #this will => things like @variable=str\n
eval( "a.instance_eval {" + arguments.chop + "}") #hence the awkward eval eval chop
end
私が見つけた唯一の問題は、クラスメソッドでこれを実装しようとしている (これを複数のインスタンスに対して実行する) 際に、これを実現する方法がわからないことです。
class Thing
attr_accessor :variable
def self.method
File.read("filename.ext").each_line do |arguments|
eval("instance.instance_eval{" + arguments.chop + "}") #this line
end
end
end
つまり、メソッドを呼び出すインスタンスへの参照です。この場合、self は単に Thing になるだけなので、これを行う方法はありますか? 全体的にこれを行うには、より適切な方法が適している可能性があります。私は昨夜ルビーを学んだばかりなので、必要な巧妙なトリックをいくつか見る機会がありませんでした。その結果、私の言語の成熟度はまだ少し新鮮です。
文脈上、Thing はゲーム内のキャラクターであり、セーブファイルからその基本値をロードします。