Hace mucho tiempo que sabía que las "constantes" en Ruby (es decir, los nombres de las variables que están en mayúscula) no son realmente constante. Al igual que otros lenguajes de programación, una referencia a un objeto es lo único almacenado en la variable/constante. (Barra lateral: Ruby tiene la posibilidad de "congelar" los objetos referenciados para que no se modifiquen, que hasta donde yo sé, no es una capacidad ofrecida en muchos otros idiomas.)¿Lanzar excepción al volver a asignar una constante en Ruby?
Así que esta es mi pregunta: cuando vuelvas asignar un valor a una constante, se obtiene una advertencia de este modo:
>> FOO = 'bar'
=> "bar"
>> FOO = 'baz'
(irb):2: warning: already initialized constant FOO
=> "baz"
¿hay una manera de forzar Ruby a lanzar una excepción en lugar de imprimir una advertencia? Es difícil descubrir por qué las reasignaciones ocurren a veces.
Gracias por señalar la otra pregunta: no hubiera pensado en usar 'Kernel.warn' para eso. Sin embargo, no parece que la reasignación constante lo use. –
Realmente no lo intenté; pero puedo imaginar que las asignaciones constantes podrían ser parte del lenguaje en sí y así manejarlas en el código C. En ese caso, sería aún más difícil conectar con eso, y mucho menos plantear una excepción de Ruby. – averell