introspection/dunder_instance_variables.rb

tests/_examples/introspection/dunder_instance_variables.rb in the metorex repository.

class Ledger
  def initialize
    @__hidden = 1
    @shown = 2
  end
end
p Ledger.new.instance_variables
class Ledger
  def initialize
    @__hidden = 1
  end
end
l = Ledger.new
p l.inspect.sub(/0x\h+/, ""), l.dup.instance_variables, l.instance_variable_get(:@__hidden)
l.instance_variable_set(:@__set, 2)
p l.instance_variables

Output:

[:@__hidden, :@shown]
"#<Ledger: @__hidden=1>"
[:@__hidden]
1
[:@__hidden, :@__set]