为什么Lua中的print()会这样?

为什么Lua中的print()会这样?,lua,Lua,论Lua解释器 >print("This is a string >>spread over multiline") stdin:1: unfinished string near '"This is a' 因为我们知道Lua解释器,所以我们可以通过mulitline完成一个语句 例如 这很好用 再次: >print([[This is a multiline >>string]]) This is a multiline string 这很好用!!那么为

论Lua解释器

>print("This is a string
>>spread over multiline")
stdin:1: unfinished string near '"This is a'
因为我们知道Lua解释器,所以我们可以通过mulitline完成一个语句 例如

这很好用

再次:

>print([[This is a multiline
>>string]])
This is a multiline
string

这很好用!!那么为什么在第一个print()语句中显示错误???

请阅读精细参考手册:

[……]

短文字字符串可以通过匹配单字符或双字符分隔 引号,可以包含以下类似C的转义序列:“
\a
”(bell), “
\b
”(backspace)、“
\f
”(表单提要)、“
\n
”(换行)、“
\r
”(回车 返回)、“
\t
”(水平选项卡)、“
\v
”(垂直选项卡)、“
\
”(反斜杠), “
\”
”(引号[双引号])和“
\”
”(撇号[单引号]) 反斜杠后跟换行符将在 字符串。转义序列'\z'跳过以下空白范围 字符,包括换行符;在 将长文字字符串缩进多行,而不添加换行符 和空格插入字符串内容。短文字字符串不能包含 未转义的换行符或转义未形成有效的转义序列

[……]

文字字符串也可以使用long括起来的long格式定义 括号。我们将n级开口长括号定义为开口 方括号后接n个等号,再接另一个开口 方括号。因此,0级的开口长括号写为
[
,, 级别1的开口长括号写为
[=[
,依此类推 结束长括号的定义类似;例如,结束长括号 级别4的括号写为
]==]
任何级别的开口长支架,并在第一个闭合长支架处结束 同一级别的括号。它可以包含除结束语以外的任何文本 同一级别的括号。此括号形式中的文字可以运行 有几行,不解释任何转义序列,并忽略长转义序列 任何其他级别的括号。任何类型的行尾序列(回车) 回车、换行符、回车符后跟换行符或换行符后跟换行符 按回车)转换为简单的换行符


阅读精细参考手册:

[……]

短文字字符串可以通过匹配单字符或双字符分隔 引号,可以包含以下类似C的转义序列:“
\a
”(bell), “
\b
”(backspace)、“
\f
”(表单提要)、“
\n
”(换行)、“
\r
”(回车 返回)、“
\t
”(水平选项卡)、“
\v
”(垂直选项卡)、“
\
”(反斜杠), “
\”
'(引号[double quote]),和“
\”
'(撇号[单 引号]。反斜杠后面接换行将导致换行 字符串。转义序列'\z'跳过以下空白范围 字符,包括换行符;在 将长文字字符串缩进多行,而不添加换行符 和空格插入字符串内容。短文字字符串不能包含 未转义的换行符或转义未形成有效的转义序列

[……]

文字字符串也可以使用long括起来的long格式定义 括号。我们将n级开口长括号定义为开口 方括号后接n个等号,再接另一个开口 方括号。因此,0级的开口长括号写为
[
,, 级别1的开口长括号写为
[=[
,依此类推 结束长括号的定义类似;例如,结束长括号 级别4的括号写为
]==]
任何级别的开口长支架,并在第一个闭合长支架处结束 同一级别的括号。它可以包含除结束语以外的任何文本 同一级别的括号。此括号形式中的文字可以运行 有几行,不解释任何转义序列,并忽略长转义序列 任何其他级别的括号。任何类型的行尾序列(回车) 回车、换行符、回车符后跟换行符或换行符后跟换行符 按回车)转换为简单的换行符


您自己没有看到差异吗?在第二个print语句中,您使用了
print([[])
,而在第一个语句中仅使用了
print()
。有一个明显的差异。在第一个示例中,解释器不知道应该在第二行继续,您需要使用
[[]]
或斜杠``尝试在末尾添加斜杠:`print(“这是一个字符串\`谢谢你这么做了,但是为什么我们必须给\?你自己没有看到区别吗?”在第二个print语句中,你使用了
print([]])
,而你只使用了
print()
在第一行中。有一个明显的区别。在第一个示例中,解释器不知道它应该继续在第二行,您需要指出,使用
[[]]
或斜杠``尝试在末尾添加斜杠:`print(“这是一个字符串\`感谢Fireycat它起作用了,但为什么我们必须给出\?
>print([[This is a multiline
>>string]])
This is a multiline
string