Estoy un poco confundido acerca de las palabras reservadas en Ruby.¿Son palabras reservadas "inicial" y "final" o no?
"The Ruby Programming Language", en coautoría de Matz, dice que begin
y end
son palabras reservadas del idioma. Ciertamente se usan sintácticamente para marcar bloques.
Sin embargo, los objetos estándar en el lenguaje han métodos llamado begin
y end
, como en
(1..10).end
=> 10
Ahora, las pruebas de esto, me parece que, de hecho, puedo definir métodos denominados "begin" y "end "en objetos, aunque si intento nombrar una variable" begin ", falla. (He aquí una muestra de utilizarlo como un nombre de método, en que realmente funciona ... :)
class Foo
def begin
puts "hi"
end
end
Foo.new.begin
Por lo tanto, supongo que estoy pidiendo, lo que en realidad es el estado de palabras reservadas como éste? Me hubiera imaginado que no podrían usarse para nombres de métodos (y sin embargo parece funcionar) o que al menos sería un estilo terrible (pero en realidad se usa en el lenguaje central para la clase Range).
Estoy bastante confundido en cuanto a cuándo pueden usarse y para qué. ¿Hay incluso documentación sobre esto?
¿Esto es cierto para todas las "palabras reservadas"? Si es un estilo malo, ¿por qué lo hace la API central? (Aunque intuitivamente, parece un estilo horrible, de hecho, algo terrible para el lenguaje). Y, * ¿está documentado *? – Perry
Está permitido porque a veces tener métodos llamados como una palabra reservada puede tener sentido (en mi humilde opinión 'Range # end') es un buen ejemplo. Las cosas no siempre son en blanco y negro, como la mayoría de las características, esto podría ser útil si se usa con cuidado. En cuanto a la documentación, apareció una búsqueda rápida en Google http://www.tutorialspoint.com/ruby/ruby_syntax.htm, que establece que "estas palabras reservadas no se pueden usar como nombres constantes o variables. Sin embargo, pueden hacerlo. , ser utilizado como nombres de método ", que en mi humilde opinión tiene mucho sentido. –
Sin embargo, eso no parece ser documentación oficial. (No he encontrado ninguna mención al respecto en los documentos oficiales, aunque eso no implica que no exista). – Perry