class
es una palabra clave utilizada para definir una nueva clase. Dado que es una palabra clave reservada, no puede usarla como nombre de variable. No puede usar ninguna de las palabras clave de Ruby como nombres de variable, por lo que no podrá tener variables nombradas def
o module
o if
o end
, etc., class
no es diferente.
Por ejemplo, considere lo siguiente:
def show_methods(class)
puts Object.const_get(class).methods.inspect
end
show_methods "Kernel"
Intentar ejecutar esto da como resultado un error, ya que no se puede usar class
como nombre de variable.
test.rb:1: syntax error, unexpected kCLASS, expecting ')'
def show_methods(class)
^
test.rb:2: syntax error, unexpected ')'
puts Object.const_get(class).methods.inspect
Para solucionarlo, usaremos el identificador en su klass
lugar. No es especial, pero se usa convencionalmente como nombre de variable cuando se trata de una clase o nombre de clase. Es fonéticamente lo mismo, pero como no es una palabra clave reservada, Ruby no tiene problemas con ella.
def show_methods(klass)
puts Object.const_get(klass).methods.inspect
end
show_methods "Kernel"
La salida, como se esperaba, es
["method", "inspect", "name", "public_class_method", "chop!"...
Puede usar cualquier nombre de variable (no reservado) allí, pero la comunidad ha comenzado a usar klass
. No tiene ninguna magia especial, solo significa "Quería usar el nombre 'clase' aquí, pero no puedo, ya que es una palabra clave reservada".
En una nota al margen, dado que lo ha escrito mal varias veces, vale la pena señalar que en Ruby, el caso es importante. Las fichas que comienzan con una letra mayúscula son constantes. A través del pico :
Un nombre constante comienza con una letra mayúscula seguida de caracteres de nombre. Los nombres de las clases y los nombres de los módulos son constantes y siguen las convenciones de nombres constantes. Por convención, las variables constantes normalmente se escriben con letras mayúsculas y guiones bajos en todas partes.
Por lo tanto, la ortografía correcta es class
y klass
, en lugar de Class
y Klass
. Los últimos serían constantes, y ambos Class
y Klass
son nombres de constantes válidos, pero recomendaría no usarlos por motivos de claridad.