为什么表格文字与Lua中的表格引用区别对待?
发布时间:2020-12-15 00:24:52 所属栏目:大数据 来源:网络整理
导读:这是一个Lua 5.2.2脚本,显示了表的声明和索引: mylist = {'foo','bar'} print(mylist[1])foo 以下声明为何不合法? print({'foo','bar'}[1])stdin:1: ')' expected near '[' 我想不出任何其他语言,其中文字不能替代参考(当然,除非需要左值). FWIW,使表格文
这是一个Lua 5.2.2脚本,显示了表的声明和索引:
> mylist = {'foo','bar'} > print(mylist[1]) foo 以下声明为何不合法? > print({'foo','bar'}[1]) stdin:1: ')' expected near '[' 我想不出任何其他语言,其中文字不能替代参考(当然,除非需要左值). FWIW,使表格文字具有括号,使声明合法: > print(({'foo','bar'})[1]) foo 解决方法
这也与Lua这个语法有效的事实有关:
myfunc { 1,2,3 } 它相当于: myfunc( { 1,3 } ) 因此表达式如: myfunc { 1,3 } [2] 被解析为: myfunc( { 1,3 } )[2] 所以首先评估函数调用,然后进行索引. 如果{1,3} [2]可以被解析为有效的索引操作,则可能导致前一个表达式中出现歧义,这需要更多的前瞻性. Lua团队选择通过使其成为单通道编译器来快速制作Lua字节码编译器,因此它只使用最少的前瞻扫描源代码一次.朝那个方向This message to lua mailing list from Roberto Ierusalimschy (lead Lua developer)点. 字符串文字和方法调用存在同样的问题.这是无效的: "my literal":sub(1) 但这是有效的: ("my literal"):sub(1) 再一次,Lua允许这样: func "my literal" 等同于此: func( "my literal" ) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |