Quiero saber cómo se comportan las variables de instancia de un módulo de Ruby en múltiples clases que lo 'mezclan' 'en'. Escribí un código de muestra para probarlo:¿Las variables de instancia de un módulo se comparten entre clase con mixin?
# Here is a module I created with one instance variable and two instance methods.
module SharedVar
@color = 'red'
def change_color(new_color)
@color = new_color
end
def show_color
puts @color
end
end
class Example1
include SharedVar
def initialize(name)
@name = name
end
end
class Example2
include SharedVar
def initialize(name)
@name = name
end
end
ex1 = Example1.new("Bicylops")
ex2 = Example2.new("Cool")
# There is neither output or complains about the following method call.
ex1.show_color
ex1.change_color('black')
ex2.show_color
¿Por qué no funciona? ¿Y podría alguien explicar cuál será el comportamiento real de @color
en múltiples instancias Example$
?
¡Explicación bastante clara! Entonces, si el módulo que diseñé es para mezclar con otra clase. Debería definir la 'variable de instancia' dentro del' método de instancia', ¿es correcto mi entendimiento? – steveyang
Sí, simplemente calcule cuál es el yo actual y luego puede comprender dónde se colocará la variable de instancia. – megas
Gracias. Ahora mismo estoy aprendiendo Ruby, no a la parte del "yo actual". Parece un lenguaje más elegante que 'javaScript'. – steveyang