metaprogramming/class_variables_parens.rb
tests/_examples/metaprogramming/class_variables_parens.rb in the metorex repository.
# Module#class_variables — written with parentheses. Returns class variable
# names as symbols in definition order. The optional `inherit` argument
# controls whether class variables from ancestors are included.
class Base
@@base = 1
@@shared = 2
end
class Derived < Base
@@derived = 3
end
puts(Base.class_variables.inspect)
puts(Derived.class_variables.inspect)
puts(Derived.class_variables(false).inspect)
module Flags
@@flag = :on
end
puts(Flags.class_variables.inspect)
Output:
[:@@base, :@@shared]
[:@@derived, :@@base, :@@shared]
[:@@derived]
[:@@flag]