class
ключевое слово, используемое для определения нового класса. Поскольку это зарезервированное ключевое слово, вы не можете использовать его в качестве имени переменной. Вы не можете использовать какие-либо ключевые слова Ruby в качестве имен переменных, поэтому вы не сможете иметь переменные с именами def
или module
или if
или end
и т. Д. - class
не исключение.
Например, рассмотрим следующее:
def show_methods(class)
puts Object.const_get(class).methods.inspect
end
show_methods "Kernel"
Попытка запустить это приводит к ошибке, так как вы не можете использовать class
в качестве имени переменной.
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
Чтобы исправить это, мы будем использовать klass
вместо этого идентификатор . Это не что-то особенное, но обычно используется как имя переменной, когда вы имеете дело с классом или именем класса. Фонетически это то же самое, но поскольку это не зарезервированное ключевое слово, у Ruby нет проблем с ним.
def show_methods(klass)
puts Object.const_get(klass).methods.inspect
end
show_methods "Kernel"
Выход, как и ожидалось,
["method", "inspect", "name", "public_class_method", "chop!"...
Вы можете использовать здесь любое (незарезервированное) имя переменной, но сообщество приняло это за использование klass
. В нем нет особой магии - это просто означает: «Я хотел использовать здесь имя« класс », но не могу, поскольку это зарезервированное ключевое слово».
Кстати, поскольку вы несколько раз напечатали его неправильно, стоит отметить, что в Ruby регистр имеет значение. Токены, начинающиеся с заглавной буквы, являются константами. С помощью кирки :
Имя константы начинается с заглавной буквы, за которой следуют символы имени. Имена классов и модулей являются константами и соответствуют соглашениям об именах констант. По соглашению, постоянные переменные обычно пишутся прописными буквами и подчеркиваниями.
Таким образом, правильное написание - class
и klass
, а не Class
и Klass
. Последнее были бы постоянными, как Class
и Klass
являются допустимыми именами постоянных, но я бы не рекомендовал использовать их для ясности.