Lua学习笔记(1)

  最近在学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..所以,你懂的

原文地址:https://www.cnblogs.com/haiyidao/p/2738007.html