Lua学习笔记(二) Lua语法简述(一)

    这几天生活上琐碎的事情,叫我没有时间来更新博文,好吧闲话少说。今天我们来学习Lua中的语法。

    对于有过C / C++基础的朋友们来说 Lua 的语法差别并不是很大。先从最基础的写法开始。

类型:

    在C/C++中,我们对于变量有一个明确的定义,那就是类型。是的,每一个变量都有一个自己的类型,对一个char 型的变量直接赋予 int 值的话,后果是不可预料的。

    但是,在 Lua 中类型这个词变得很模糊。因为,变量在声明的时候指定的类型,在后面是可以改变的。

例如:

 
  
  1. a=0; 
  2. print(type(a)); --输出number 
  3. a="Hello"
  4. print(type(a)); --输出string 

    在 Lua 中类型是不安全的。例如上述代码,一个简单的赋值,可以让变量 a 的类型由 number 变成 string ,可见在 Lua 中一定要谨慎赋值。代码中的 type 方法,正如字面的意思,他是来辨别一个变量的类型。也可以在脚本中,去辨别一个变量是否因为赋值而导致非意愿类型错误。

    下面我们看下 Lua 中的常用类型。

 
  
  1. a=nil; 
  2. print(type(a));    --输出nil 
  3. a="Hello World"
  4. print(type(a));    --输出string 
  5. a=10; 
  6. print(type(a));    --输出number 
  7. a=true
  8. print(type(a));    --输出boolean 
  9. a={}; 
  10. print(type(a));    --输出table 
  11. a=function (a,b) return a+b end 
  12. print(type(a));    --输出function 

    在 Lua 中,如果一个变量只是声明。例如:a; 那么他默认的类型是 nil 。

    a=function (a,b) return a+b end 这段代码,想必有些人不大明白,待会儿在函数中,我会讲明的。

    a={}; 在 Lua 中存在一种特殊的类型,它就是Table。它在定义上类似于C中的数组。但,仅仅是类似。因为,他比数组可要强大的多。我们使用数组的时候,数组的下标必须是数字。但是,Table 中的下标可以是其他的东西。

例如:

 
  
  1. Male = "Pengfei"
  2.  
  3. TabelTest= 
  4.     1,              --相当于TabelTest[1] 为1 
  5.     [5] = 40,       --相当于TabelTest[5] 为40 
  6.     test=  
  7.     { 
  8.         ["age"]=27, --和Name=Male写法可互换 
  9.         Name=Male 
  10.     }, 
  11.     20              --相当于TabelTest[2] 为20 

    这里的test 是不占数组数字下标的步进,大家要注意。在Table的赋值中默认是从[1]开始的,而不同于 C 中从 [0] 开始。

运算符:

    刚刚我们介绍过了 Lua 中常用的几种类型,但是,还有两种类型:UserData、Thread因为这两种我们目前还用不到,所以,我们会在后面对其进行介绍。

    下面我们来介绍下 Lua 中的运算符:

    基础运算:和C中相同,有+,-,*,/。但是,Lua 中还多了一个就是 ^ 这个符号,他是用来进行乘方的。

    比较运算:这个也与 C 中一样,拥有 < , > , <= , >= ,== 这里需要注意下,那就是不等。C中不等是 != 。 在 Lua 中,不等是 ~= ,这个是Lua中来表达不等的运算符。这里需要特殊牢记下。

    逻辑运算:and or not 这三个是在Lua中进行逻辑运算的。说到逻辑运算,这里要提一句,在 Lua 中只有nil是false,其他不管什么,即使是0也为true。经常像我一样用0来当false用的同学们要注意。继续来介绍逻辑运算,and的作用是判断and左边的值,是否为false,如果为false则返回左边的值,如果不是的话则返回右边的值。而or正好与and相反,or的作用是判断or左边的值,是否为true,如果为true则返回左边的值,如果不是的话则返回右边的值。

    字符连接:Lua中的字符连接比较简单,类似于JAVA的那种"Hello "+"World" 这样的写法。Lua中是用..来完成这个操作的。例如:a="Hello "+"Pengfei"; 那么a的值就是"Hello Pengfei"。

    运算符优先级,由高到底排列:

         ^   (乘方)
     not - (一元运算)
     * /
     + -
     ..(字符串连接)
     < > <= >= ~= ==
     and
     or

好了,今天就先写到这里,天气冻手啊,我也要早些睡觉了。明天还有更多的任务要去完成,明天我会写下剩下的,例如:函数,常用的if for while 在 Lua 中的写法。各位,晚安。