module Foo
class << self
attr_accessor :use_colours
end
end
Now, it works to do this:
Foo.use_colours = true
puts Foo.use_colours
Foo.use_colours = false
puts Foo.use_colours
My questions:
Why is the syntax “class << self” used? For an array, << means to
append. I am unsure what this means for class, or why this syntax was
used.
Also, in the above example, is it possible to query the @use_colours
variable for when instance methods of module Foo are mixed into a class?
I would like to mixin instance variables that are defined on the
instance level of the module, inside methods defined in that module. So
yeah, basically I want to use a module like a class, but it seems ruby
gives obstacles to that attempt.
Also, in the above example, is it possible to query the @use_colours
variable for when instance methods of module Foo are mixed into a class?
I would like to mixin instance variables that are defined on the
instance level of the module, inside methods defined in that module. So
yeah, basically I want to use a module like a class, but it seems ruby
gives obstacles to that attempt.
Not sure I understand the question, but it sounds like you want this:
module A
attr_accessor :whatev
end
include it in the singleton class
class B
class << self
include A
end
self.whatev = ‘something’
whatev # => “something”
end
shorthand version of the above
class C
extend A
self.whatev = ‘something’
whatev # => “something”
end
Why is the syntax “class << self” used? For an array, << means to
append. I am unsure what this means for class, or why this syntax was
used.
I can’t speak for why this particular notation was used, obviously,
but the ‘<<’ operation is used similarly in other places as well, not
just appending to an array. I look at it as basically a generic
append; in the case of the class’s eigenclass, you’re appending
something to it (perhaps creating the eigenclass in the first place).
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.