Se topa con un comportamiento extraño y se pregunta si alguien más puede confirmar lo que estoy viendo.Ruby attr_reader le permite a uno modificar la variable de cadena si usa <<
Supongamos que crea una clase con una variable miembro y permite que se lea con attr_reader.
class TestClass
attr_reader :val
def initialize(value)
@val = value
end
end
Ahora, cuando hago lo siguiente, parece modificar el valor de @val, a pesar de que sólo he concedido privilegios de lectura.
test = TestClass.new('hello')
puts test.val
test.val << ' world'
puts test.val
Esto devuelve
hello
hello world
Esto es sólo el resultado de algunas pruebas que hice en IRB así que no sé si esto es siempre el caso
'attr_reader' significa que no puede establecer el valor, es decir, no se define ningún método' value = '. Ciertamente no significa que no se puede calcular un método en el objeto –