Quelle est la différence entre Class et Klass dans Ruby?

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é.