檢視物件例項變數
可以使用 instance_variables
,instance_variable_defined?
和 instance_variable_get
查詢物件的例項變數,並使用 instance_variable_set
和 remove_instance_variable
修改它們:
class Foo
attr_reader :bar
def initialize
@bar = 42
end
end
f = Foo.new
f.instance_variables #=> [:@bar]
f.instance_variable_defined?(:@baz) #=> false
f.instance_variable_defined?(:@bar) #=> true
f.instance_variable_get(:@bar) #=> 42
f.instance_variable_set(:@bar, 17) #=> 17
f.bar #=> 17
f.remove_instance_variable(:@bar) #=> 17
f.bar #=> nil
f.instance_variables #=> []
例項變數的名稱包括 @
符號。如果省略它,你將收到錯誤:
f.instance_variable_defined?(:jim)
#=> NameError: `jim' is not allowed as an instance variable name