Lua学习笔记(二)
变量
使用前必须申明,即创建该变量。
包括:全局变量,局部变量,表中的域。
前文中提到过,Lua中所有的变量默认都是全局变量,有一种情况是例外的,那就是用local显示声明为局部变量的。
试尝试:
1 | a=1; |
这里经过试验可以轻易的得知,local定义的变量的使用范围就是在当前的代码块儿之内的。一旦超出的话就直接归nil!
这里使用到了Lua中的一些语法,例如function与end,这里就不一一的详细描述了,后面会讲到。
赋值语句
多变量赋值
在Lua中,多个变量可以一同赋值。(两边的数量相同时)
1 | a,b="hello","world" |
结果为:
1 | hello |
当变量的个数不等于赋值个数的时候?
1 | a. 变量个数 > 值的个数 按变量个数补足nil |
注意,当函数返回多个值的时候,可以直接使用多变量赋值:
1 | a,b=fun() |
这里的话返回的多个值会直接赋值给前面的变量。
索引
对table表的使用索引主要就是包括了两种:
1 | site={} |
输出结果:
1 | 第一种thbelief |
循环
循环类型 | 描述 |
---|---|
while 循环 | 在条件为 true 时,让程序重复地执行某些语句。执行语句前会先检查条件是否为 true。 |
for 循环 | 重复执行指定语句,重复次数可在 for 语句中控制。 |
repeat…until | 重复执行循环,直到 指定的条件为真时为止 |
循环嵌套 | 可以在循环内嵌套一个或多个循环语句(while do … end;for … do … end;repeat … until;) |
控制语句
Break:退出当前循环或语句。
流程控制
需要特别注意,在Lua中0是true。
在Lua中,只有nil和false为假!
if语句、if…else语句、if的嵌套语句。
函数
Lua中函数的定义:
1 | optional_function_scope function function_name( argument1, argument2, argument3..., argumentn) |
- optional_function_scope: 该参数是可选的制定函数是全局函数还是局部函数,未设置该参数默认为全局函数,如果你需要设置函数为局部函数需要使用关键字 local。
- function_name: 指定函数名称。
- argument1, argument2, argument3…, argumentn: 函数参数,多个参数以逗号隔开,函数也可以不带参数。
- function_body: 函数体,函数中需要执行的代码语句块。
- result_params_comma_separated: 函数返回值,Lua语言函数可以返回多个值,每个值以逗号隔开。
可变参数
和c语言类似,Lua中用…表示函数有可变的参数。
- select(‘#’, …) 返回可变参数的长度
- select(n, …) 用于访问 n 到 select(‘#’,…) 的参数
1 | function add(...)--这里使用...表示可变参数 |
运算符
算术运算符
操作符 | 描述 | 实例 |
---|---|---|
+ | 加法 | A + B 输出结果 30 |
- | 减法 | A - B 输出结果 -10 |
* | 乘法 | A * B 输出结果 200 |
/ | 除法 | B / A w输出结果 2 |
% | 取余 | B % A 输出结果 0 |
^ | 乘幂 | A^2 输出结果 100 |
- | 负号 | -A 输出结果v -10 |
由于太简单了,这里就不写例子了。
关系运算符
操作符 | 描述 | 实例 |
---|---|---|
== | 等于,检测两个值是否相等,相等返回 true,否则返回 false | (A == B) 为 false。 |
~= | 不等于,检测两个值是否相等,相等返回 false,否则返回 true | (A ~= B) 为 true。 |
> | 大于,如果左边的值大于右边的值,返回 true,否则返回 false | (A > B) 为 false。 |
< | 小于,如果左边的值大于右边的值,返回 false,否则返回 true | (A < B) 为 true。 |
>= | 大于等于,如果左边的值大于等于右边的值,返回 true,否则返回 false | (A >= B) 返回 false。 |
<= | 小于等于, 如果左边的值小于等于右边的值,返回 true,否则返回 false | (A <= B) 返回 true。 |
这里需要注意的就是~=,和其它高级语言使用的!=不同,Lua中用~=表示不等于。
逻辑运算符
操作符 | 描述 | 实例 |
---|---|---|
and | 逻辑与操作符。 若 A 为 false,则返回 A,否则返回 B。 | (A and B) 为 false。 |
or | 逻辑或操作符。 若 A 为 true,则返回 A,否则返回 B。 | (A or B) 为 true。 |
not | 逻辑非操作符。与逻辑运算结果相反,如果条件为 true,逻辑非为 false。 | not(A and B) 为 true。 |
其它运算符
操作符 | 描述 | 实例 |
---|---|---|
.. | 连接两个字符串 | a..b ,其中 a 为 “Hello “ , b 为 “World”, 输出结果为 “Hello World”。 |
# | 一元运算符,返回字符串或表的长度。 | #”Hello” 返回 5 |
这两个其它运算符之前提过,这里就不详细描述了。
优先级
1 | ^ |
字符串
转义字符
转义字符 | 意义 | ASCII码值(十进制) |
---|---|---|
a | 响铃(BEL) | 007 |
b | 退格(BS) ,将当前位置移到前一列 | 008 |
f | 换页(FF),将当前位置移到下页开头 | 012 |
n | 换行(LF) ,将当前位置移到下一行开头 | 010 |
r | 回车(CR) ,将当前位置移到本行开头 | 013 |
t | 水平制表(HT) (跳到下一个TAB位置) | 009 |
v | 垂直制表(VT) | 011 |
代表一个反斜线字符’’’ | 092 | |
’ | 代表一个单引号(撇号)字符 | 039 |
” | 代表一个双引号字符 | 034 |