121 votes

Quelle est la différence entre Class et Klass en rubis?

Quelle est la différence entre Class et Klass?

202voto

Chris Heald Points 28814

class est un mot-clé utilisé pour définir une nouvelle classe. Puisque c'est un mot clé réservé, vous n'êtes pas capable de l'utiliser comme un nom de variable. Vous ne pouvez pas utiliser de Ruby sont des mots-clés comme noms de variables, de sorte que vous ne serez pas en mesure d'avoir des variables nommées def ou module ou if ou end, etc - class n'est pas différent.

Par exemple, considérez les points suivants:

def show_methods(class)
  puts Object.const_get(class).methods.inspect
end
show_methods "Kernel"

Essayez d'exécuter cette résultats dans une erreur, puisque vous ne pouvez pas utiliser class comme un 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 corriger cela, nous allons utiliser l'identificateur klass à la place. Il n'est rien de spécial, mais il est classiquement utilisé comme un nom de variable lorsque vous faites affaire avec une classe ou un nom de classe. C'est phonétiquement le même, mais puisque ce n'est pas un mot clé réservé, Ruby n'a pas de problèmes avec elle.

def show_methods(klass)
  puts Object.const_get(klass).methods.inspect
end

show_methods "Kernel"

De sortie, comme prévu, est

["method", "inspect", "name", "public_class_method", "chop!"...

Vous pouvez utiliser n'importe quel (non réservés) nom de la variable y, mais la communauté a pris à l'aide d' klass. Ce n'est pas une magie particulière, il signifie simplement "je voulais utiliser le nom de "classe" ici, mais je ne peux pas, puisque c'est un mot clé réservé".

Sur une note de côté, puisque vous avez dactylographié mal quelques fois, il est intéressant de noter qu'en Ruby, en cas de questions. Des jetons de commencer avec une lettre majuscule sont des constantes. Via la Pioche:

Une constante le nom commence par une lettre majuscule suivie par le nom des personnages. Les noms de classe et les noms de module sont des constantes, et suivre la constante des conventions de nommage. Par convention, les variables constantes sont normalement épelé à l'aide de lettres majuscules et des caractères de soulignement dans l'ensemble.

Ainsi, l'orthographe correcte est class et klass, plutôt que d' Class et Klass. Ce dernier aurait du être des constantes, et les deux Class et Klass sont valables les noms de constantes, mais je déconseille de les utiliser à des fins de clarté.

25voto

Promethean_Sin Points 633

Je pense que klass est aussi une méthode Rails (ou plutôt ActiveRecord). Il est utilisé pour obtenir la classe d'une association.

13voto

Jason S Points 58434

klass et clazz et clasz et similaires sont des fautes d'orthographe créatives utilisées pour contourner un mot réservé class .

Il serait beaucoup moins embêtant pour les yeux d'utiliser class1 ou cl ou classX ou autre chose plutôt qu'une faute d'orthographe intentionnelle.

5voto

Chuck Points 138930

L'un est le nom d'une classe et l'autre n'est qu'une constante non définie par défaut. Et pour la paire que vous êtes le plus susceptible de voir, class et klass , le premier est un mot clé pour définir les classes alors que le dernier n’est qu’un identifiant (comme toute autre chaîne de caractères). ). Il est utilisé lorsque vous souhaitez écrire le mot "classe", mais ne le pouvez pas car il s'agit d'un mot clé réservé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X