Ruby 为什么在单引号字符串中需要双反斜杠转义?

Ruby 为什么在单引号字符串中需要双反斜杠转义?,ruby,string,escaping,quotes,Ruby,String,Escaping,Quotes,只是好奇Ruby开发人员决定在单引号中解释双反斜杠转义序列的背后是什么。我可以理解为什么必须解释转义单引号,因为无法插入单引号字符。例如: '\'' == "'" 但请考虑 \'=“\”\代码>。为什么这是另一种特殊情况?这是插入反斜杠本身。如果没有这种特殊情况,就不可能在单引号字符串中使用反斜杠 \'和\撇号需要转义 这种特殊情况对于将单引号或撇号嵌入单引号字符串是必要的。考虑以下事项: '\'' # => "'" 'It\'s a baby boy!' # => "It's

只是好奇Ruby开发人员决定在单引号中解释双反斜杠转义序列的背后是什么。我可以理解为什么必须解释转义单引号,因为无法插入单引号字符。例如:

'\'' == "'"

但请考虑<代码> \'=“\”\代码>。为什么这是另一种特殊情况?

这是插入反斜杠本身。如果没有这种特殊情况,就不可能在单引号字符串中使用反斜杠

\'
\

撇号需要转义 这种特殊情况对于将单引号或撇号嵌入单引号字符串是必要的。考虑以下事项:

'\''
# => "'"

'It\'s a baby boy!'
# => "It's a baby boy!"
如果没有转义,Ruby将假定第二个引号终止字符串,留下不平衡的第三个引号

斜杠需要逃生 作为前一个的推论,您需要转义转义字符以避免转义后续字符。例如,
'\'
表示转义第二个引号,留下一个未终止的字符串。但是,
'\\'
会在字符串中产生一个文本斜杠。

以反斜杠结束字符串 硬引号字符串中最初需要的转义是
\'
,其他人也注意到了这一点


但之所以需要
\\
的真正根本原因是,一旦支持
\'
,否则就不可能用反斜杠结束一个硬引号字符串。

是的,我相信这是真正的原因和正确的答案。逻辑上,如果字符串以反斜杠结尾,则不能终止该字符串<代码>“…\”这也将包含在字符串中