Class和Klass在ruby之间有什么区别?
Class和Klass有什么区别?
class
是用来定义一个新类的关键字。 由于它是一个保留关键字,因此您无法将其用作variables名称。 你不能使用任何Ruby的关键字作为variables名,所以你将不能使用名为def
或module
variables或者if
或者end
等。
例如,请考虑以下几点:
def show_methods(class) puts Object.const_get(class).methods.inspect end show_methods "Kernel"
试图运行这个会导致错误,因为你不能使用class
作为variables名。
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
。 这不是特别的,但是当你处理一个类或类名时,它通常被用作variables名。 它在语音上是相同的,但由于它不是一个保留的关键字,所以Ruby没有任何问题。
def show_methods(klass) puts Object.const_get(klass).methods.inspect end show_methods "Kernel"
产出,如预期的那样
["method", "inspect", "name", "public_class_method", "chop!"...
你可以使用任何(非保留)variables名称,但社区已经采取使用klass
。 它没有任何特殊的魔法 – 它只是意味着“我想在这里使用'class'这个名字,但是我不能,因为它是一个保留关键字”。
在一个侧面说明,因为你已经错误地input了几次,值得注意的是,在Ruby中,案件很重要。 以大写字母开头的标记是常量。 通过镐 :
常量名称以大写字母开头,后跟名称字符。 类名称和模块名称是常量,并遵循常量命名约定。 按照惯例,常量variables通常使用大写字母和下划线拼写。
因此,正确的拼写是class
和klass
,而不是Class
和Klass
。 后者将是常量, Class
和Klass
都是有效的常量名,但我build议不要将它们用于清晰目的。
clasz
和clasz
和clasz
等是创造性拼写错误,用来绕过保留字class
。
使用class1
或cl
或classX
或其他东西,而不是故意的拼写错误,会classX
。
我认为klass
也是一个Rails(或更确切地说ActiveRecord)的方法 。 它被用于获得一个协会的类。
一个是类的名字,另一个默认是一个未定义的常量。 而对于你更可能看到, class
和klass
,前者是一个关键字定义类,而后者只是一个标识符(就像任何其他string)。 当你想写“class”这个单词的时候会用到它,但是不能用,因为它是一个保留的关键字。