clases - herencia en ruby
Cómo llamar dinámicamente a los métodos de acceso en Ruby (2)
No soy un experto en rubíes, pero creo que podrías hacer:
instance.send("a=", "value")
Esta pregunta ya tiene una respuesta aquí:
Independientemente de si es una buena práctica o no, ¿cómo puedo llamar de forma dinámica a los métodos de acceso en Ruby?
Aquí hay una clase de ejemplo:
class Test_Class
attr_accessor :a, :b
end
Puedo usar el método Object.send para leer la variable ...
instance.a = "value"
puts( instance.send( "a" ) )
# => value
Pero me cuesta mucho escribirle. Estos lanzan "número incorrecto de argumentos (1 para 0) (ArgumentError)"
instance.send("a", "value")
y
instance.method("a").call("value")
Por favor, ayúdame a StackOverflow!
También puede acceder directamente a las variables de instancia de un objeto usando las funciones instance_variable_*
:
instance = Test_Class.new # => #<Test_Class:0x12b3b84>
# instance variables are lazily created after first use of setter,
# so for now instance variables list is empty:
instance.instance_variables # => []
instance.instance_variable_set(:@a, 123) # => 123
instance.a # => 123
instance.instance_variables # => ["@a"]
instance.instance_variable_get("@a") # => 123