欢迎光临散文网 会员登陆 & 注册

如何理解lua的语法糖

2022-05-09 10:11 作者:只有神知道的歌词特效  | 我要投稿

来源链接:https://zhuanlan.zhihu.com/p/285825344

这篇文章源于我看到某乎某用户觉得lua语法“违反直觉”,我觉得有这感觉源于lua的语法糖,如果流于表面的把这些加糖后的语法往C,C#,java等语义上套确实容易产生误解。另外xLua群上也经常会问些因为对语法理解问题导致问题。

lua里头一些很常见的语法,其实都是加了糖。比如这个:

去糖后其实是这样的,

去糖后更清晰了,a是table,table本质上就是一个hashmap,我们往一个hashmap里头设置了键值对。

再看这个:

第一次去糖后是这样:

再按照文章开篇第一个语法糖再去一次糖,就变成了

所以,仍然是对一个hashmap设置键值对,只不过值相对于c/c#/java比较特殊,这是个function(准确来说是一个closure),因为lua里头函数是first-class的,可以作为一个普通值来处理。

再来

一次脱糖

二次脱糖就比较复杂,分两种情况:前面有local变量add,前面没有。

前面有local add,其实就是对add变量的一次赋值,如果没有,还要脱糖:

其实就是对一个特殊的table设置键值对。

跟着来一个导致很多人踩坑的冒号语法糖:

脱糖后是这样的

和冒号语法糖相关的语法糖

一次脱糖后是这样

注意,你按脱糖后的写法,那个self你写啥名字都可以。


如何理解lua的语法糖的评论 (共 条)

分享到微博请遵守国家法律