在Lua中嵌套括号有什么意义?

ele*_*ong 11 string lua

我正在教自己Lua用于iOS游戏开发,因为我听说过很多关于它的好东西.我对该语言的文档级别印象非常深刻,这使得学习更容易.

我的问题是我找到了一个Lua概念,似乎没有人对"初学者"的解释:引号的嵌套括号.例如,我被教导了带有转义单引号和双引号的长字符串,如下所示:

string_1 = "This is an \"escaped\" word and \"here\'s\" another."
Run Code Online (Sandbox Code Playgroud)

也可以在没有整体周围报价的情况下编写.相反,人们只需用双括号替换它们,如下所示:

string_2 = [[This is an "escaped" word and "here's" another.]]
Run Code Online (Sandbox Code Playgroud)

这些对我来说都是完全合理的.但我也可以string_2用"嵌套括号"来编写这一行,其中包括两组双括号之间的等号,如下所示:

string_3 = [===[This is an "escaped" word and "here's" another.]===]
Run Code Online (Sandbox Code Playgroud)

我的问题很简单.使用的语法有string_3什么意义?它提供了相同的结果string_1,并string_2当作为一个输入给定print()的,所以我不明白为什么即使存在嵌套的括号内.有人可以帮助一个菜鸟(我)获得一些观点吗?

Tim*_*per 14

如果您的字符串包含等于分隔符的子字符串,则会使用它.例如,以下内容无效:

string_2 = [[This is an "escaped" word, the characters ]].]]
Run Code Online (Sandbox Code Playgroud)

因此,为了使其按预期工作,您需要使用不同的字符串分隔符,如下所示:

string_3 = [===[This is an "escaped" word, the characters ]].]===]
Run Code Online (Sandbox Code Playgroud)

我认为可以说很多字符串文字都不包含子字符串]],在这种情况下,可能永远不会有理由使用上述语法.

  • @elersong - 它可以帮助你将整个程序放在一个字符串中而不做任何改动:`my_program = [= [print [[This is a"escapeped"word]]] =]` (5认同)
  • `[[]]`字符串也是多行的. (3认同)
  • 还应该指出的是,您可以以编程方式确定引用任意字符串所需的`=`的计数,并且引用所述字符串不需要更改字符串本身的内容,仅使用适当的长字符串标记围绕它. (2认同)