Ruby语言中的%q,%w等定义了什么?

Kei*_*ett 30 ruby

这么多的Ruby语言的方法,而不是语法,所以我希望能够找到%q,%w等等,定义为方法Kernel类.但是,他们不在那里.

那他们在哪里定义?他们是语言关键词吗?

the*_*Man 30

编程Ruby关于字符串章节中提到了它们.

相关的%q{}%Q{}%{}这是一样的%Q{}.此外,分隔符" {}"我告诉可以匹配对分隔符的,所以你可以使用[],()%q{}是一样的使用单引号来分隔字符串.%Q{}与使用双引号相同,允许插入嵌入的字符串:

%q{foobar} # => "foobar"
%Q{foobar} # => "foobar"

asdf = 'bar' # => "bar"
%q{foo#{asdf}} # => "foo\#{asdf}"
%Q{foo#{asdf}} # => "foobar"
Run Code Online (Sandbox Code Playgroud)

此外,还有%w{}一个使用空格将字符串拆分为数组.例如:

%w[a b c] # => ["a", "b", "c"]
Run Code Online (Sandbox Code Playgroud)

%w{} 不插入嵌入变量:

%w[a b asdf] # => ["a", "b", "asdf"]
%w[a b #{asdf}] # => ["a", "b", "\#{asdf}"]
Run Code Online (Sandbox Code Playgroud)

%r{}定义了正则表达式:

%r{^foo}.class # => Regexp
Run Code Online (Sandbox Code Playgroud)

最后有%x{}一些像反引号的行为,即"``",将字符串传递给底层操作系统.把它想象成"exec":

%x{date} # => "Fri Nov 26 15:08:44 MST 2010\n"
Run Code Online (Sandbox Code Playgroud)

很多Ruby的想法,这些快捷方式来自Perl中,只有在Perl他们使用q{},qq{},qw{},qx{}qr{}.领先q代表"引用",如果我没记错的话,它们会被视为"引用"操作符.Ruby的文档需要扩展,这个特定的工具集肯定可以使用一些帮助.


Chr*_*sen 25

它们在解析器中被"硬编码"; 看到

查找相关代码的最简单方法是查找第二次出现的str_sword(单引号WORD).所有的"分隔输入"语法定义有:%Q,%q,%W,%w,%x,%r,和%s(如上文引用两个版本定义了相同的组分隔的输入标记的).


Dan*_*uis 5

它们不是关键字,而是宏。很难找到它们的官方参考资料,但这里有一个。