为什么Lua中的print()会这样?
论Lua解释器为什么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 这很好用!!那么为
>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