最近在学Lua,看的是《Lua程序设计(第二版)》,似乎是唯一的中文资料了吧。且已经绝版,除了淘宝上能看到若干影印版外,其他的都找不到了。如果有朋友能找到正版的,请不吝相告
记录下初步的感受吧:
1.数据类型
Lua只有:nil(空)、boolean(布尔)、number(数值)、string(字符串)、userdata(自定义类型)、function(函数)、thread(线程)、table(表)这么几个类型。其中boolean的值为true/false(这不是废话吗),有意思地方在于,Lua将false跟nil视为假,也即是这两者之外都为真(不管是数值0,还是空字符串)。
2.运算符
算术运算符、关系运算符与目前主流的开发语言没什么差异。逻辑运算符虽然写法略有差别(and、or、not),但是主要还是运算结果还是不一样的
在C#/C++/java这些静态语言(也是主流语言)中,逻辑运算符的计算结果大都都是bool型,即为true/false。但是lua并不完全是。
a and b ----a若真,则返回 b
这样的表达式下,返回了是整个对象(如果a跟b是对象的话)
另外在Lua没有三元表达式,但是可以通过逻辑运算符来实现相似的功能
a and b or c ----要与三元表达式达到同样的效果,前提是b为真
原因是如果a为真,而b为假了,那么返回的不是b,而是c了,这个跟三元表达式就不一致了。个人感觉三元表达式的内在思想是分支,而Lua的模拟通过的是运算。而分支跟运算的差异在前面说的情况下,差异一下子就出来了。所以如果要用这种方式来实现三元表达式,就必须清楚b的值了。替代的方案是..........if...else(额)
另外Lua没有switch..所以,你懂的