class
é uma palavra-chave usada para definir uma nova classe. Por ser uma palavra-chave reservada, você não pode usá-la como nome de variável. Você não pode usar nenhuma das palavras-chave do Ruby como nomes de variáveis, então você não será capaz de ter variáveis nomeadas def
ou module
ou if
ou end
, etc - class
não é diferente.
Por exemplo, considere o seguinte:
def show_methods(class)
puts Object.const_get(class).methods.inspect
end
show_methods "Kernel"
Tentar executar isso resulta em um erro, pois você não pode usar class
como um nome de variável.
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 consertar, usaremos o identificador klass
. Não é especial, mas é convencionalmente usado como um nome de variável quando você está lidando com uma classe ou nome de classe. É foneticamente o mesmo, mas como não é uma palavra-chave reservada, Ruby não tem problemas com ela.
def show_methods(klass)
puts Object.const_get(klass).methods.inspect
end
show_methods "Kernel"
A saída, como esperado, é
["method", "inspect", "name", "public_class_method", "chop!"...
Você poderia usar qualquer nome de variável (não reservado) lá, mas a comunidade começou a usar klass
. Não tem nenhuma mágica especial - significa apenas "Eu queria usar o nome 'classe' aqui, mas não posso, pois é uma palavra-chave reservada".
Em uma nota lateral, já que você digitou errado algumas vezes, é importante notar que em Ruby, o caso importa. Os tokens que começam com uma letra maiúscula são constantes. Via o Picareta :
Um nome constante começa com uma letra maiúscula seguida por caracteres de nome. Os nomes das classes e dos módulos são constantes e seguem as convenções de nomenclatura de constantes. Por convenção, as variáveis constantes são normalmente escritas com letras maiúsculas e sublinhados.
Assim, a grafia correta é class
e klass
, em vez de Class
e Klass
. Os últimos seriam constantes, e ambos Class
e Klass
são nomes de constantes válidos, mas eu não recomendaria usá-los para fins de clareza.