关于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()语句中显示错误?
答案 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 任何其他级别的括号。任何类型的行尾序列(运输 返回,换行,回车后跟换行,或换行符 通过回车)转换为简单的换行符。