set_my_name_var A, @@my_name = 'A', A. , . , - A , @@my_name, . :
module Example
def name=(name)
@@name = name
end
def name
@@name
end
end
class First
include Example
end
class Second
include Example
end
irb(main):066:0> f = First.new
=> #<First:0x2d4b80c>
irb(main):067:0> s = Second.new
=> #<Second:0x2d491d8>
irb(main):068:0> f.name = 'Set via f'
=> "Set via f"
irb(main):069:0> s.name
=> "Set via f"
, , , , , . cattr_reader ( cattr_accessor) :
class_eval(<<-EOS, __FILE__, __LINE__)
unless defined? @@
@@
end
:
BAincluded klass.send(:cattr_accessor, :my_name).- a
@@my_name B, nil.
cattr_accessor set_my_name_var, @@my_name B, . cattr_accessor , , @@my_name B, B, A 's. , , . ( B A)
, . , b = B.new, :
>> A.class_variables
=> []
>> B.class_variables
=> ["@@my_other_name", "@@my_name"]
>> B.send(:class_variable_get, '@@my_name')
=> nil
>> b.set_my_name_var
=> "A"
>> A.send(:class_variable_get, '@@my_name')
=> "A"
>> B.send(:class_variable_get, '@@my_name')
=> nil
>> B.my_name
=> nil
, cattr_reader , uninitialized class variable, . ( nil , ).