只是好奇Ruby开发人员决定解释单引号内的双反斜杠转义序列的原因。我可以理解为什么必须解释转义的单引号,因为无法插入单引号字符。例如:
'\'' == "'"
但请考虑'\\' == "\\"
。为什么这是另一个特例?
答案 0 :(得分:2)
最初在硬引用字符串中需要的一个转义符是\'
,其他人也会注意到。
但\\
所需要的真正根本原因是,一旦\'
受到支持,否则就无法 结束 带有反斜杠的硬引号字符串。
答案 1 :(得分:1)
这是插入反斜杠本身。如果没有这种特殊情况,就不可能在单引号字符串中使用反斜杠。
\'
和\\
are the only two escape sequences in single-quoted strings。
答案 2 :(得分:0)
这种特殊情况对于将单引号或撇号嵌入单引号字符串是必要的。请考虑以下事项:
'\''
# => "'"
'It\'s a baby boy!'
# => "It's a baby boy!"
没有转义,Ruby会假设第二个引号标记终止字符串,留下不平衡的第三个引号。
作为前一个的推论,您需要转义转义字符以避免转义后续字符。例如,'\'
表示要转义第二个引号,留下未终止的字符串。但是,'\\'
会在字符串中生成一个文字斜杠。