只是好奇 Ruby 开发人员决定解释单引号内的双反斜杠转义序列背后的原因。我可以理解为什么必须解释转义的单引号,因为无法插入单引号字符。例如:
'\'' == "'"
但考虑'\\' == "\\"
。为什么这是另一个特例?
\'
正如其他人也注意到的那样,硬引用字符串中最初需要的一种转义是。
但真正需要的根本原因\\
是,一旦被\'
支持,就不可能用反斜杠结束硬引用的字符串。
这是插入反斜杠本身。如果没有这种特殊情况,就不可能在单引号字符串中使用反斜杠。
\'
并且\\
是单引号字符串中仅有的两个转义序列。
这种特殊情况对于将单引号或撇号嵌入到单引号字符串中是必要的。考虑以下:
'\''
# => "'"
'It\'s a baby boy!'
# => "It's a baby boy!"
如果没有转义符,Ruby 将假定第二个引号终止字符串,留下不平衡的第三个引号。
作为前面的推论,您需要转义转义字符以避免转义后续字符。例如,'\'
说要转义第二个引号,留下一个未终止的字符串。但是,'\\'
会导致字符串中出现文字斜线。