-1
クラスはattr_accessor
です。例:インスタンスのすべてのattr_accessorフィールドのハッシュを取得する方法は?
class Class
attr_accessor :x
attr_accessor :y
...
end
このクラスのインスタンスからハッシュを作成したいとします。そのようなもの:
c.to_attr_hash = { :x => "x", :y => "y" }
どうすればいいですか?
もう少し簡潔な(そしてもっとルビー的な)解は次のようになります: 'instance_variables.each_with_object({}){| var、hash | hash [var] = instance_variable_get(var)} ' – Anthony
これは' attr_accessor'ではなく、インスタンス変数のリストです。ところで、Classクラスのような猿のパッチを当てるコアクラスは、慎重に* veeeeery *を実行する必要があります。 –
'c = Class.new;を試してください。 c.instance_variable_set(:@ i_am_not_an_attr_accessor、42); c.to_attr_hash'と表示され、2つの 'attr_accessor'のどれも表示されませんが、' attr_accessor' *ではないものが表示されます。 –