[234] Escape Artist

Title Text:Easier to escape: n-layered nested quotes or an iron maiden?

Origin:https://xkcd.com/234/

https://www.explainxkcd.com/wiki/index.php/234:_Escape_Artist

Harry Houdini(出生于Erik Weisz /Ehrich Weiss)是一位着名的逃脱艺术家,其着名的例行程序包括逃离紧身衣,并在助理锁定在盒子内时切换位置。

“逃避”这个词在计算机科学中也有意义。在编程中“逃避”某些东西意味着用另一个没有这种特殊含义的字符序列替换通常具有特殊含义的字符或字符序列。一种常见的转义方法是使用一个特殊的转义字符,从其后面的任何字符中删除特殊含义。例如,许多编程语言用引号括起文本字符串(例如“this is a string”)。如果您尝试在字符串中直接添加引号,编译器会将其解释为字符串的结尾。为了避免这种情况,引号用反斜杠逃脱:“他说,”再见!“然后走了。”

Cueball所遇到的问题与以下事实有关:Bash shell将空格解释为一个特殊的句法标记,而实际上他只是希望空格是文字空格字符。在这种情况下,使用\转义空格会强制Bash以这种方式解释他的脚本。

(还有一种方法可以使用转义字符,但为了解释漫画,我们会忽略它。)

与Cueball交谈的人正在单独谈论Houdini,因为Cueball大声思考他的剧本问题,这导致了不同的对话。这最终导致Cueball暗示Houdini可能通过用反斜杠“逃避”(从其中移除特殊含义)来“逃脱”(从自己手中解放)手铐。

有时,转义字符需要“嵌套” – 反斜杠字符本身可以转义为\\以产生文字反斜杠,因此,例如,如果需要生成文字引号以输出到脚本文件,那么脚本文件也需要使用引号转义,人们需要将其输出为\\\“,这将输出为\”。如果我需要实际输出\\\“,则需要将其键入为\\\\\\\”。所需的反斜杠数量会增加,并且很难跟踪(参见1638:反斜杠)。此行为是标题文本中提到的一种n级嵌套引号。实际上,这可以非常简单,语法高亮显示解析器将字符串视为结尾的地方,使得逃避应该转义的字符变得微不足道,例如:

“然后他说”嗨“。”

在此示例中,嵌套引号可以转义,直到编辑器显示字符串的统一颜色。

铁娘子据说是一种中世纪的酷刑装置,目前据信是为了旅游目的而发明的,比据说使用过的时间要晚得多。

哈里·胡迪尼(Harry Houdini)的逃脱包括逃离一个声称的“铁娘子”,虽然它只是模糊地类似于“中世纪”的酷刑装置。

Leave a Reply

Your email address will not be published.

Categories