私はクラスの動物違いを取得するためにインスタンスを比較し、属性名
class Animal
def initialize(a, b, c)
@aa=a
@bb=b
@cc=c
end
end
を持って、私はこれらのインスタンスを比較しようとしている:
animal_original = Animal.new(1,2,3)
animal_to_compare = Animal.new(11,2,3)
私はこれらの2つのインスタンスを比較し、取得するためのメソッドが必要変数の名前と値の違い。
この場合、私はこのようになりaa
を含む配列(これは変数の名前です)、最初のオブジェクトの値、及び第二の値が必要になりますが:
["aa", "1", "11"] #returned value
Iは
def inst_vars obj
obj.instance_variables.map do |att|
{ att => obj.instance_variable_get(att) }
end
end
しかし、私は、これを達成することはできません:それは、オブジェクトのすべてのインスタンス変数を取得し、この機能をより簡単に比較するためにマップに変換する実行しようとしました。比較を行い、私が必要とするすべての値を得るには、どうしたらいいですか?
class Animal
def initialize(a, b, c)
@aa=a
@bb=b
@cc=c
end
def inst_vars obj
obj.instance_variables.map do |att|
[ att, instance_variable_get(att), obj.instance_variable_get(att) ]
end.select do |att, one, two|
one != two
end
end
end
私は私ができるように与えられた論理の再利用など多くのことを試みてきた。このような何かについてどのように
あなたが有益だと思っている投票の答えを恐れる。コミュニティが良い答えを見つけるのに役立ちます。 –