times operador modulos metodo mapas herencia crear constantes clases ruby module class-variables

operador - modulos ruby



Crear variables de módulo en Ruby (4)

Ruby admite nativamente variables de clase en módulos, por lo que puede usar variables de clase directamente, y no algunas variables proxy o pseudo-clase:

module T @@foo = ''bar'' def self.set(x) @@foo = x end def self.get @@foo end end p T.get #=> ''bar'' T.set(''fubar'') p T::get #=> ''fubar''

¿Hay alguna manera de crear una variable en un módulo en Ruby que se comporte de manera similar a una variable de clase? Lo que quiero decir con esto es que se podría acceder sin inicializar una instancia del módulo, pero se puede cambiar (a diferencia de las constantes en los módulos).


Si no necesita llamar desde una instancia, puede simplemente usar una variable de instancia dentro del cuerpo del módulo.

module SomeModule module_function def param; @param end def param= v; @param = v end end SomeModule.param # => nil SomeModule.param = 1 SomeModule.param # => 1

La variable de instancia @param luego pertenecerá al módulo SomeModule , que es una instancia de la clase Module .


También puede inicializar el valor dentro de la definición del módulo:

module MyModule class << self attr_accessor :my_variable end self.my_variable = 2 + 2 end p MyModule.my_variable


puede establecer una variable de instancia de clase en el módulo.

module MyModule class << self; attr_accessor :var; end end MyModule.var = ''this is saved at @var'' MyModule.var => "this is saved at @var"