ruby - 为什么使用 %q( ) 或 %( )?

标签 ruby string

在浏览一些 Ruby 文档时,我遇到了百分比字符串,其中有两个我有点困惑。具体来说就是 %()

string = %(I am a string)
 #=> "I am a string"

和 %q()

 string = %q(I am a string)
     #=> "I am a string"

当我和他们一起玩时,他们似乎都输出了一个字符串,就像我刚刚写的一样

string = "I am a string"
#=> "I am a string"

为什么,在什么情况下,人们更愿意使用它们而不是仅仅创建一个字符串文字,因为它们似乎并没有通过键入或简化来节省多少?

最佳答案

%%q 形式也是 字符串文字,只是解析规则不同。考虑:

%q(I am a 'string' with a "string" in me!)

允许使用不同的形式,使用不同的转义/终止字符,可以使某些文字更容易表达。默认情况下,我更喜欢 ',但这是关于针对给定情况使用适当的形式。

%(与%Q相同)和%q形式与"有相同的关系和 ' 形式;因此使用其中一种(同一系列)之间的区别应该很清楚。

历史上,这些 different % Notations从 perl 中“借来”。

关于ruby - 为什么使用 %q( ) 或 %( )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29268215/

相关文章:

java - ArrayList<String>.add 抛出 UnsupportedOperationException

c++ - 如何在 C++ 中根据不同的值使用不同的命名空间?

string - 如何从 shell 字符串中删除最后一个字段

ruby - 调用 instance_eval(&lambda) 传递当前上下文时出现错误 'wrong number of arguments'

ruby - 代码实际上没有在 RSpec 中断言?

ruby-on-rails - rails : #inspect not displaying attribute

ruby-on-rails - Ruby 字符串重音错误 : More than meet the eyes

Ruby,使用相同的 DO block 评估一个或另一个 ruby​​ 函数

java - 生成相邻子集的序列(从列表的列表中)

c++ - 在 C++ 中转换为大写