这几天生活上琐碎的事情,叫我没有时间来更新博文,好吧闲话少说。今天我们来学习Lua中的语法。
对于有过C / C++基础的朋友们来说 Lua 的语法差别并不是很大。先从最基础的写法开始。
在C/C++中,我们对于变量有一个明确的定义,那就是类型。是的,每一个变量都有一个自己的类型,对一个char 型的变量直接赋予 int 值的话,后果是不可预料的。
但是,在 Lua 中类型这个词变得很模糊。因为,变量在声明的时候指定的类型,在后面是可以改变的。
例如:
- a=0;
- print(type(a)); --输出number
- a="Hello";
- print(type(a)); --输出string
在 Lua 中类型是不安全的。例如上述代码,一个简单的赋值,可以让变量 a 的类型由 number 变成 string ,可见在 Lua 中一定要谨慎赋值。代码中的 type 方法,正如字面的意思,他是来辨别一个变量的类型。也可以在脚本中,去辨别一个变量是否因为赋值而导致非意愿类型错误。
下面我们看下 Lua 中的常用类型。
- a=nil;
- print(type(a)); --输出nil
- a="Hello World";
- print(type(a)); --输出string
- a=10;
- print(type(a)); --输出number
- a=true;
- print(type(a)); --输出boolean
- a={};
- print(type(a)); --输出table
- a=function (a,b) return a+b end
- print(type(a)); --输出function
在 Lua 中,如果一个变量只是声明。例如:a; 那么他默认的类型是 nil 。
a=function (a,b) return a+b end 这段代码,想必有些人不大明白,待会儿在函数中,我会讲明的。
a={}; 在 Lua 中存在一种特殊的类型,它就是Table。它在定义上类似于C中的数组。但,仅仅是类似。因为,他比数组可要强大的多。我们使用数组的时候,数组的下标必须是数字。但是,Table 中的下标可以是其他的东西。
例如:
- Male = "Pengfei";
- TabelTest=
- {
- 1, --相当于TabelTest[1] 为1
- [5] = 40, --相当于TabelTest[5] 为40
- test=
- {
- ["age"]=27, --和Name=Male写法可互换
- Name=Male
- },
- 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 中的写法。各位,晚安。