Was ist der Unterschied zwischen Class und Class?
Antworten
Zu viele Anzeigen?class
ist ein Schlüsselwort, das zur Definition einer neuen Klasse verwendet wird. Da es ein reserviertes Schlüsselwort ist, können Sie es nicht als Variablennamen verwenden. Sie können keines der Ruby-Schlüsselwörter als Variablennamen verwenden, also können Sie keine Variablen mit dem Namen def
o module
o if
o end
, etc - class
ist nicht anders.
Denken Sie zum Beispiel an Folgendes:
def show_methods(class)
puts Object.const_get(class).methods.inspect
end
show_methods "Kernel"
Der Versuch, dies auszuführen, führt zu einem Fehler, da Sie nicht class
als Variablenname.
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
Um dies zu beheben, verwenden wir den Bezeichner klass
stattdessen. Es ist nichts Besonderes, aber es wird üblicherweise als Variablenname verwendet, wenn es sich um eine Klasse oder einen Klassennamen handelt. Phonetisch ist es dasselbe, aber da es kein reserviertes Schlüsselwort ist, hat Ruby keine Probleme damit.
def show_methods(klass)
puts Object.const_get(klass).methods.inspect
end
show_methods "Kernel"
Die Ausgabe ist wie erwartet
["method", "inspect", "name", "public_class_method", "chop!"...
Sie könnten dort jeden (nicht reservierten) Variablennamen verwenden, aber die Gemeinschaft hat sich für die Verwendung von klass
. Es hat keine besondere Magie - es bedeutet nur: "Ich wollte den Namen 'class' hier verwenden, aber das geht nicht, da es ein reserviertes Schlüsselwort ist.
Nebenbei bemerkt, da Sie sich ein paar Mal vertippt haben, ist es erwähnenswert, dass in Ruby die Groß- und Kleinschreibung eine Rolle spielt. Token, die mit einem Großbuchstaben beginnen, sind Konstanten. Über die Spitzhacke :
Ein Konstantenname beginnt mit einem Großbuchstaben, gefolgt von Namenszeichen. Klassennamen und Modulnamen sind Konstanten und folgen den Konstanten-Namenskonventionen. Konventionell werden konstante Variablen in der Regel mit Großbuchstaben und Unterstrichen geschrieben.
Die korrekte Schreibweise ist also class
y klass
statt Class
y Klass
. Letztere wären Konstanten, und beide Class
y Klass
sind gültige Konstantennamen, aber ich würde davon abraten, sie aus Gründen der Übersichtlichkeit zu verwenden.
klass
ist auch ein Rails (oder eher ActiveRecord) Methode . Sie wird verwendet, um die Klasse einer Assoziation zu ermitteln.
Wie im verlinkten Inhalt angegeben:
class Author < ActiveRecord::Base
has_many :books
end
Author.reflect_on_association(:books).klass
# => Book
Der eine ist der Name einer Klasse und der andere ist standardmäßig eine undefinierte Konstante. Und für das Paar, das Sie eher sehen werden, class
y klass
Das erste ist ein Schlüsselwort zur Definition von Klassen, während das zweite nur ein Bezeichner ist (wie jede andere Zeichenfolge). Es wird verwendet, wenn Sie das Wort "class" schreiben möchten, dies aber nicht können, weil es ein reserviertes Schlüsselwort ist.
1 Stimmen
Wo haben Sie Letzteres gesehen?
0 Stimmen
Ich habe Klass an mehr als einem Ort gesehen. Kürzlich bei der Suche nach Singles
22 Stimmen
klass
wird üblicherweise verwendet, um eine Variable zu benennen, die eineClass
Objekt (auch Klassen sind Objekte), wie inklass = String
. Können Sie die Quelle angeben, wo Sie es gesehen haben, um eine genauere Erklärung zu erhalten?5 Stimmen
Nein, ich möchte keine einzelne Quelle angeben, weil ich nicht will, dass es so erklärt wird. Ich möchte ein größeres Bild von der Sache haben
5 Stimmen
Manchmal verwenden Menschen
clazz
stattklass
(zum Beispiel in dem Buch "Metaprogramming Ruby").2 Stimmen
Bei TV Tropes hieße das "Xtreme Kool Letterz" (kein Link - nicht produktivitätssicher).
0 Stimmen
Verwandt: ruby-doc.org/docs/ProgrammierungRuby/html/classes.html