class
to słowo kluczowe używane do definiowania nowej klasy. Ponieważ jest to zarezerwowane słowo kluczowe, nie możesz go użyć jako nazwy zmiennej. Nie możesz używać słów kluczowych Rubiego jako nazw zmiennych, więc nie będziesz mógł mieć zmiennych o nazwach def
lub module
lub if
lub end
, itd. - class
nie jest inaczej.
Na przykład rozważ następujące kwestie:
def show_methods(class)
puts Object.const_get(class).methods.inspect
end
show_methods "Kernel"
Próba uruchomienia tego skutkuje błędem, ponieważ nie możesz użyć class
jako nazwy zmiennej.
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
Aby to naprawić, użyjemy klass
zamiast tego identyfikatora . Nie jest wyjątkowa, ale jest konwencjonalnie używana jako nazwa zmiennej, gdy masz do czynienia z klasą lub nazwą klasy. Fonetycznie jest to samo, ale ponieważ nie jest to zastrzeżone słowo kluczowe, Ruby nie ma z nim żadnych problemów.
def show_methods(klass)
puts Object.const_get(klass).methods.inspect
end
show_methods "Kernel"
Wynik, zgodnie z oczekiwaniami, to
["method", "inspect", "name", "public_class_method", "chop!"...
Możesz użyć dowolnej (niezarezerwowanej) nazwy zmiennej, ale społeczność zaczęła używać klass
. Nie ma żadnej specjalnej magii - oznacza po prostu „Chciałem użyć tutaj nazwy„ klasa ”, ale nie mogę, ponieważ jest to zastrzeżone słowo kluczowe”.
Na marginesie, ponieważ kilka razy wpisałeś go nieprawidłowo, warto zauważyć, że w Rubim sprawa ma znaczenie. Tokeny zaczynające się wielką literą to stałe. Za pomocą kilofa :
Stała nazwa zaczyna się od dużej litery, po której następują znaki nazwy. Nazwy klas i nazwy modułów są stałymi i są zgodne ze stałą konwencją nazewnictwa. Zgodnie z konwencją, stałe zmienne są zwykle zapisywane przy użyciu wielkich liter i znaków podkreślenia.
Zatem prawidłowa pisownia to class
i klass
, a nie Class
i Klass
. To ostatnie byłoby stałe i oba Class
i Klass
są ważne nazwy stałych, ale polecam przed wykorzystaniem ich do celów przejrzystości.