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являются допустимыми именами постоянных, но я бы не рекомендовал использовать их для ясности.