为什么Lua中的print()表现得像这样?

时间:2017-05-30 05:39:56

标签: lua

关于Lua口译员

>print("This is a string
>>spread over multiline")
stdin:1: unfinished string near '"This is a'

由于我们知道Lua解释器,我们可以完成对mulitline的声明 例如

>a=2
>a=a+
>>1

这完美无缺

再次:

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

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

1 个答案:

答案 0 :(得分:4)

阅读精细参考手册:

  

3.1 – Lexical Conventions

     

[...]

     

短文字字符串可以通过匹配single或double来分隔   引号,并且可以包含以下类似C的转义序列:'\a'(bell),   '\b'(退格),'\f'(换页),'\n'(换行符),'\r'(运费   返回),'\t'(水平标签),'\v'(垂直标签),'\\'(反斜杠),   '\"'(引号[双引号])和'\''(撇号[单身]   引用])。 反斜杠后跟换行符会导致换行符   字符串。转义序列'\ z'跳过以下白色空格范围   字符,包括换行符;打破和特别有用   将长文字字符串缩进多行而不添加换行符   和空格分成字符串内容。 短文字字符串不能包含   未转义的换行也没有形成有效的转义序列。

     

[...]

     

也可以使用 long括起来的长格式定义文字字符串   括号我们将打开等级为n 的长括号定义为开头   方括号后跟 n 等号后跟另一个开口   方括号。因此,0级的开头长括号写为[[,   级别1的开始长括号写为[=[,依此类推。一个   关闭长括号的定义类似;例如,结束很长时间   级别4的括号写为]====] long literal 以a开头   打开任何级别的长支架,并在第一个关闭长度结束   同级别的支架。它可以包含除结束之外的任何文本   同级别的支架。 这种括号内的文字可以运行   几行,不解释任何转义序列,并忽略long   任何其他级别的括号。任何类型的行尾序列(运输   返回,换行,回车后跟换行,或换行符   通过回车)转换为简单的换行符。