Class和Klass在ruby中有什么区别?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

Class和Klass有什么区别?

提问于
用户回答回答于

class是用于定义新类的关键字。因为它是一个保留关键字,所以不能将它用作变量名。您不能使用Ruby的任何关键字作为变量名,因此无法拥有名为defmoduleifend等等,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...

用户回答回答于

klassclazz等等clasz是用于绕过保留字的创意拼写错误的class

扫码关注云+社区