instance_variables_and_values
は引数で与えられたインスタンスについて、定義されたインスタンス変数名とその値をハッシュで取得するメソッドです。
class User
def initialize(name, age)
@name = name
@age = age
end
end
def instance_variables_and_values(instance)
instance
.instance_variables
.map{ |sym| [sym, instance.instance_variable_get(sym)] }
.to_h
end
taro = User.new('Taro', 20)
puts instance_variables_and_values(taro)
#=> {:@name=>"Taro", :@age=>20}
使ったメソッド
instance_variables
レシーバが持つ定義されたインスタンス変数名をシンボルの配列で返す
class User
def initialize(name, age)
@name = name
@age = age
end
end
taro = User.new('Taro', 20)
taro.instance_variables #=> [:@name, :@age]
instance_variable_get
レシーバが持つインスタンス変数の値を返す。引数にはインスタンス変数名をシンボルで与える
class User
def initialize(name, age)
@name = name
@age = age
end
end
taro = User.new('Taro', 20)
taro.instance_variable_get(:@name) #=> "Taro"
taro.instance_variable_get(:@age) #=> 20