Lua学习笔记(二)

  • 变量
  • 赋值语句
    • 多变量赋值
  • 索引
  • 循环
    • 控制语句
  • 流程控制
  • 函数
    • 可变参数
  • 运算符
    • 算术运算符
    • 关系运算符
    • 逻辑运算符
    • 其它运算符
    • 优先级
  • 字符串
    • 转义字符
    • 字符串操作
    • 字符串格式化
    • 匹配模式
      • 模式
      • 捕获
  • 数组
  • 迭代器
    • 泛型for迭代器
    • 无状态迭代器
    • 多状态迭代器
  • table
    • 操作方法

变量

使用前必须 申明 ,即创建该变量。

包括: 全局变量,局部变量,表中的域。

前文中提到过,Lua中所有的变量默认都是全局变量,有一种情况是例外的,那就是用local显示声明为局部变量的。

试尝试:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
a=1;  
local b = 2;  
function test()  
    c=3;  
    local d=4;  
end  
test()  
print("a"..a)  
print("b"..b)  
print("c"..c)  
print(d)  

—|—

这里经过试验可以轻易的得知,local定义的变量的使用范围就是在当前的代码块儿之内的。一旦超出的话就直接归nil!

这里使用到了Lua中的一些语法,例如function与end,这里就不一一的详细描述了,后面会讲到。

赋值语句

多变量赋值

在Lua中,多个变量可以一同赋值。(两边的数量相同时)

1  
2  
3  
a,b="hello","world"  
print(a)  
print(b)  

—|—

结果为:

1  
2  
hello  
world  

—|—

当变量的个数不等于赋值个数的时候?

1  
2  
a. 变量个数 > 值的个数             按变量个数补足nil  
b. 变量个数 < 值的个数             多余的值会被忽略  

—|—

注意,当函数返回多个值的时候,可以直接使用多变量赋值:

1  
a,b=fun()  

—|—

这里的话返回的多个值会直接赋值给前面的变量。

索引

对table表的使用索引主要就是包括了两种:

1  
2  
3  
4  
5  
6  
site={}  
site["key"]="thbelief"  
--第一种方法  
print("第一种"..site["key"])  
--第二种方法  
print("第二种"..site.key)  

—|—

输出结果:

1  
2  
第一种thbelief  
第二种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  
2  
3  
4  
optional_function_scope function function_name( argument1, argument2, argument3..., argumentn)  
    function_body  
    return result_params_comma_separated  
end  

—|—

  • optional_function_scope: 该参数是可选的制定函数是全局函数还是局部函数,未设置该参数默认为全局函数,如果你需要设置函数为局部函数需要使用关键字 local
  • function_name: 指定函数名称。
  • argument1, argument2, argument3…, argumentn: 函数参数,多个参数以逗号隔开,函数也可以不带参数。
  • function_body: 函数体,函数中需要执行的代码语句块。
  • result_params_comma_separated: 函数返回值,Lua语言函数可以返回多个值,每个值以逗号隔开。

可变参数

和c语言类似,Lua中用 表示函数有可变的参数。

  • select(‘#’, …) 返回可变参数的长度
  • select(n, …) 用于访问 nselect(‘#’,…) 的参数

    1
    2
    3
    4
    5
    6
    7
    8
    9

function add(...)--这里使用...表示可变参数  
local s=0  
for i,v in ipairs{...} do  
    s=s+v  
end  
print("可变参数数量:"..select("#", ...))  
return s  
end  
print(add(1,2,3,4))  

—|—

运算符

算术运算符

操作符 描述 实例
+ 加法 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  
2  
3  
4  
5  
6  
7  
8  
^  
not    - (unary)  
*      /  
+      -  
..  
<      >      <=     >=     ~=     ==  
and  
or  

—|—

字符串

转义字符

转义字符 意义 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

糖果

糖果
LUA教程

如果不小心安装错 SQL Server 为 Evaluation 的版本,要小心当超过 180 天之后,系统就会无法正常使用了 这几天遇到一个蛮特别的案例,原本收到的问题是 “维护计划” 忽然无法使用,即便是里面没有任何的Task,都无法顺利地执行。但从对方所提供的错误消...… Continue reading

PLUM NIZ静电容键盘怎么样?

Published on September 25, 2020

程序员如何选择合适的机械键盘

Published on September 18, 2020