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。它没有任何特殊的魔力——它只是意味着“我想在这里使用名称'class',但我不能,因为它是一个保留关键字”。
附带说明,由于您多次输入错误,因此值得注意的是,在 Ruby 中,大小写很重要。以大写字母开头的标记是常量。通过Pickaxe:
常量名称以大写字母开头,后跟名称字符。类名和模块名是常量,遵循常量命名约定。按照惯例,常量变量通常使用大写字母和下划线拼写。
因此,正确的拼写是class 和klass,而不是Class 和Klass。后者是常量,Class 和 Klass 都是有效的常量名称,但为了清楚起见,我建议不要使用它们。