ruby on rails(Ruby 元编程) 动态定义实例变量
使用instance_variable_set
方法
# obj.instance_variable_set(symbol, obj) -> obj
# obj.instance_variable_set(string, obj) -> obj
class Fred
def initialize(p1, p2)
@a, @b = p1, p2
end
end
fred = Fred.new('cat', 99)
fred.instance_variable_set(:@a, 'dog') #=> "dog"
fred.instance_variable_set(:@c, 'cat') #=> "cat"
fred.inspect #=> "#<Fred:0x401b3da8 @a=\"dog\", @b=99, @c=\"cat\">"
ruby on rails(Ruby 元编程) 动态获取实例变量值
使用instance_variable_get
方法
# obj.instance_variable_get(symbol) -> obj
# obj.instance_variable_get(string) -> obj
class Fred
def initialize(p1, p2)
@a, @b = p1, p2
end
end
fred = Fred.new('cat', 99)
fred.instance_variable_get(:@a) #=> "cat"
fred.instance_variable_get("@b") #=> 99