Lua是枚很小巧的语言,各种语法没有像C++等静态语言那么复杂和繁琐。

相比起来,Lua显得非常的灵活和简单。

但是也正是因为Lua“简单”,所以它才“复杂”。

如果不认真严谨的规范好Lua的写法,它可能漏洞百出,加上编辑器大多没有像C++,C#,java那样的提示和补全,

所以Lua写起来并不是那么的简单,稍不注意就可能有很多想不到的Bug。

 

总结一下最近开始写Lua的各方面的小技巧和需要注意的地方。

 

写lua的模块时,注意最后一般都要return 这个模块,刚开始写lua的时候,常常没有return这个模块,导致经常报错。

 

Lua里面,只要不加local,那么这个变量就一定是全局的变量,这个一定要注意,因为不注意的话出Bug了你根本不知道在哪错了。

 

因为Lua有函数闭包的特性,所以如果只有一个地方或一个变量或一个功能用到这个函数时,最好写成闭包,如果有不同的地方需要调用那么就写到外面。不然代码会很丑,查看起来也很不方法,再加上是lua语言。。(个人感觉)

 

类中self变量在满足功能的条件下,越少越好,能用局部变量保存self中的变量最好就用菊部变量,不然到时候self:和self.满天飞。。

 

为什么Lua里面没有switch语句?

因为Lua有表这个东西,所有switch的地方都可以用table去替代,灵活用上table索引的这个功能,凡是有大量elseif,elseif的地方(这样写很丑。。)也可以用table去替代

 

通常情况下,我们一般用self.xxxx表示这个self是一个类,xxxx是它的成员。self[xxx]表示这是一个索引表,xxx是它的索引关键字。这样写可以帮助我们去理解和区分。当然也可以两者结合使用。

 

特别要注意table和数字的结合使用。比如

local x = 111
local y = "111"

self[x]
self[y]
self.y

特别要注意它们之间的区别,数字和字符串去索引是不一样的。尤其是当其他语言的数据结构转成Lua的数据结构时,一定要很好的去区别,区分。

 

相对于C#来说lua里面的引用类型是table,其他都是值类型

相对于C++来说,除了table是浅拷贝(只拷贝引用它的字段,不拷贝堆里的),其他的都是直接copy一份新的。

 

元表中的__index和__newindex,前者对应功能为查找(读取),后者为赋值(写入)

可以用这两个来完成面向对象的类的继承体系,而后者也可以用来实现C#里面属性的set的功能,详情请百度。

 

还有很多

暂时先写到这儿。。