metaprogramming/class_variable_get.rb
tests/_examples/metaprogramming/class_variable_get.rb in the metorex repository.
# Module#class_variable_get — written without parentheses. Reads a class
# variable by name, walking included modules and superclasses, and raises a
# NameError when the variable is not defined.
module Trackable
@@tracked = :yes
end
class Counter
@@count = 7
end
class Widget < Counter
include Trackable
end
puts Counter.class_variable_get :@@count
puts Counter.class_variable_get "@@count"
puts Widget.class_variable_get :@@tracked
puts Widget.class_variable_get :@@count
c = Class.new
c.class_variable_set :@@local, "here"
puts c.class_variable_get :@@local
begin
c.class_variable_get :@@missing
rescue NameError
puts "missing raises NameError"
end
Output:
7
7
yes
7
here
missing raises NameError