我正在查看Ruby文档,我想知道如果一切都是对象,那么'关键字'也是对象,对吗?如果是这样,他们在ruby中定义了什么?
下面的页面让我很困惑,因为它显示了包含所有关键字的对象,但是这不是所有类使用的官方对象,这是不同的来自不同类的混合 -
http://ruby-doc.org/docs/keywords/1.9/Object.html
我猜上面有很多问题,主要问题是:ruby关键字如何进入ruby?
答案 0 :(得分:21)
关键字不是对象,而是在解析器中定义,可以在Ruby源代码的parse.y
中找到。这是该文件的相关部分:
reswords : keyword__LINE__ | keyword__FILE__ | keyword__ENCODING__
| keyword_BEGIN | keyword_END
| keyword_alias | keyword_and | keyword_begin
| keyword_break | keyword_case | keyword_class | keyword_def
| keyword_defined | keyword_do | keyword_else | keyword_elsif
| keyword_end | keyword_ensure | keyword_false
| keyword_for | keyword_in | keyword_module | keyword_next
| keyword_nil | keyword_not | keyword_or | keyword_redo
| keyword_rescue | keyword_retry | keyword_return | keyword_self
| keyword_super | keyword_then | keyword_true | keyword_undef
| keyword_when | keyword_yield | keyword_if | keyword_unless
| keyword_while | keyword_until
;
如果您想了解有关Ruby解析器的更多信息,请查看RubyConf 2009中的演示文稿Hacking parse.y或2011年Ruby Kaigi中的Parse.y famtour。
此外,在Kernel模块中定义了许多可用的方法(例如puts
)。
编辑:还有list of key words in the documentation,感谢@antinome指出这一点。