为什么您可以使用'''
代替"""
,如Learn Ruby the Hard Way, Chapter 10 Study Drills?
答案 0 :(得分:8)
Ruby中没有三重引号。
并列的两个String
文字被解析为单个String
文字。所以,
'Hello' 'World'
与
相同'HelloWorld'
并且
'' 'Hello' ''
与
相同'''Hello'''
与
相同'Hello'
三重单引号与三重双引号没有特殊规则,因为没有三重引号。规则与报价相同。
答案 1 :(得分:3)
我认为作者混淆了Ruby和Python,因为三重引用在Ruby中不会像作者想象的那样工作。它只是像三个单独的字符串('' '' ''
)一样工作。
对于多行字符串,可以使用:
%q{
your text
goes here
}
=> "\n your text\n goes here\n "
或%Q{}
如果您需要内部字符串插值。
答案 2 :(得分:2)
三引号'''
与单引号'
相同,因为它们不会插入任何#{}
个序列,转义字符(例如" \ n&# 34;)等。
三重双引号(ugh)"""
与双引号"
相同,因为它们执行插值和转义序列。
这是在您链接的同一页面上。
三重引用版本"""
''''
允许使用多行字符串...与单引号'
和"
一样,所以我不会&#39 ;不知道为什么两者都可用。
答案 3 :(得分:-2)
"""
中支持插值,'''
不支持插值。Rubyists对多行字符串使用三引号(类似于'heredocs')。
您可以轻松地使用这些字符之一。
就像普通字符串一样,双引号允许您在字符串内部使用变量(也称为“插值”)。
将其保存到名为multiline_example.rb
的文件中并运行它:
interpolation = "(but this one can use interpolation)"
single = '''
This is a multi-line string.
'''
double = """
This is also a multi-line string #{interpolation}.
"""
puts single
puts double
这是输出:
$ ruby multiline_string_example.rb
This is a multi-line string.
This is also a multi-line string (but this one can use interpolation).
$
现在尝试另一种方法:
nope = "(this will never get shown)"
single = '''
This is a multi-line string #{nope}.
'''
double = """
This is also a multi-line string.
"""
puts single
puts double
您将获得以下输出:
$ ruby multiline_example.rb
This is a multi-line string #{nope}.
This is also a multi-line string.
$
请注意,在两个示例中,您的输出中都有一些额外的换行符。这是因为多行字符串在其中保留了所有换行符,而puts
向每个字符串添加了换行符。