Quelle est la différence entre Class et Klass?
class
est un mot clé utilisé pour définir une nouvelle classe. Comme il s’agit d’un mot clé réservé, vous ne pouvez pas l’utiliser comme nom de variable. Vous ne pouvez utiliser aucun des mots-clés de Ruby comme noms de variables, vous ne pourrez donc pas avoir les variables nommées def
ou module
ou if
ou end
, etc. – class
n’est pas différent.
Par exemple, prenez en compte les éléments suivants:
def show_methods(class) puts Object.const_get(class).methods.inspect end show_methods "Kernel"
Essayer d’exécuter cela entraîne une erreur, car vous ne pouvez pas utiliser la class
tant que nom 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
Pour y remédier, nous utiliserons plutôt l’identifiant klass
. Ce n’est pas spécial, mais il est classiquement utilisé comme nom de variable lorsque vous traitez un nom de classe ou de classe. C’est phonétiquement le même, mais comme ce n’est pas un mot-clé réservé, Ruby n’a aucun problème avec cela.
def show_methods(klass) puts Object.const_get(klass).methods.inspect end show_methods "Kernel"
La sortie, comme prévu, est
["method", "inspect", "name", "public_class_method", "chop!"...
Vous pouvez utiliser n’importe quel nom de variable (non réservé), mais la communauté a utilisé klass
. Il n’a pas de magie particulière – cela signifie simplement “je voulais utiliser le nom ‘class’ ici, mais je ne peux pas, car c’est un mot-clé réservé”.
Sur une note de côté, comme vous avez tapé mal à quelques resockets, il est intéressant de noter que dans Ruby, l’affaire est importante. Les jetons commençant par une majuscule sont des constantes. Via la pioche :
Un nom constant commence par une lettre majuscule suivie de noms de caractères. Les noms de classe et de module sont des constantes et suivent les conventions de dénomination constantes. Par convention, les variables constantes sont normalement épelées en utilisant des lettres majuscules et des caractères de soulignement.
Ainsi, l’orthographe correcte est class
et klass
, plutôt que Class
et Klass
. Ce dernier serait des constantes, et Class
et Klass
sont des noms constants valides, mais je déconseille de les utiliser pour des raisons de clarté.
klass
est aussi une méthode Rails (ou plutôt ActiveRecord). Il est utilisé pour obtenir la classe d’une association.
Comme indiqué dans le contenu lié:
class Author < ActiveRecord::Base has_many :books end Author.reflect_on_association(:books).klass # => Book
klass
et clazz
et clasz
et autres sont des fautes d’orthographe créatives utilisées pour contourner une class
mots réservée.
Il serait beaucoup moins class1
utiliser les class1
ou cl
ou classX
ou quelque chose plutôt qu’une faute d’orthographe intentionnelle.
L’un est le nom d’une classe et l’autre est une constante non définie par défaut. Et pour la paire que vous êtes plus susceptible de voir, class
et klass
, le premier est un mot-clé pour définir des classes, tandis que le second n’est qu’un identifiant (comme toute autre chaîne de caractères). Il est utilisé lorsque vous souhaitez écrire le mot “classe”, mais pas parce que c’est un mot clé réservé.