Lua 学习记录
注释方式:(利用注释可以在IDEA中自定义注释模板)
1. 单行注释:--
2. 多行注释:--[[多行注释 多行注释--]]
3. 多行注释推荐使用 --[=[注释内容]=],这样可以避免遇到table[table[idx]]时就将多行注释结束了。
变量命名: (尽量不要用下划线+大写的方式)
区分大小写(Lua对大小写敏感)
a=5 -- 全局变量
local b=5 -- 局部变量
1. A~Z
2. a~z
3. _
4. 0~9
关键词
以下列出了 Lua 的保留关键字。保留关键字不能作为常量或变量或其他用户自定义标示符:
and break do else
elseif end false for
function if in local
nil not or repeat
return then true until
while
Lua数据类型
数据类型 描述
nil 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。
boolean 包含两个值:false和true。
number 表示双精度类型的实浮点数。
string 字符串由一对双引号或单引号来表示。
function 由 C 或 Lua 编写的函数。
userdata 表示任意存储在变量中的C数据结构。
thread 表示执行的独立线路,用于执行协同程序。
table Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串。在 Lua 里,
table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。
string(字符串)
1. 字符串由一对双引号或单引号来表示
2. 也可以用 2 个方括号 "[[]]" 来表示"一块"字符串
3. 在对一个数字字符串上进行算术操作时,Lua 会尝试将这个数字字符串转成一个数字
4. 字符串连接使用的是 ..
5. 使用 # 来计算字符串的长度,放在字符串前面
6. 转义字符用于表示不能直接显示的字符,比如后退键,回车键,等。如在字符串转换双引号可以使用 "\""
字符串操作
1. string.upper(argument):
字符串全部转为大写字母。
2. string.lower(argument):
字符串全部转为小写字母。
3. string.gsub(mainString,findString,replaceString,num)
在字符串中替换,mainString为要替换的字符串,findString 为被替换的字符,replaceString 要替换的字符,num 替换次数(可以忽略,则全部替换)string.gsub("aaaa","a","z",3); ==> zzza 3
4. string.find (str, substr, [init, [end]])
搜索指定的内容(第三个参数为索引),返回其具体位置。不存在则返回 nil
5. string.reverse(arg)
6. string.format(...)
table(表)
1. Lua 里表的默认初始索引一般以 1 开始
2. 数组的索引可以是数字或者是字符串
eg: a = {}
a.name = ""
a.id = 0
eg: b = {1,2,3}
b[2]
赋值语句
1. 应该尽可能的使用局部变量
2. 交换变量 a,b = b,a
3. 局部变量必须使用local字段,就算在函数内没有加loca也默认全局变量
循环
1. Lua 编程语言中数值 for 循环语法格式:
for var=exp1,exp2,exp3 do
<执行体>
end
2. Lua 编程语言中泛型 for 循环语法格式:
a = {"one", "two", "three"}
for i, v in ipairs(a) do
print(i, v)
end
3. Lua 编程语言中 while 循环语法:
while(condition)
do
statements
end
4. Lua 编程语言中 repeat...until 循环语法格式:(类似于java中的 do while)
repeat
statements
until( condition )
5. 用于退出当前循环或语句,如果使用循环嵌套,break语句将停止最内层循环的执行,并开始执行的外层的循环语句。
判断
1. if 语句
if(布尔表达式)
then
--[ 在布尔表达式为 true 时执行的语句 --]
end
2. if...else 语句
if(布尔表达式)
then
--[ 布尔表达式为 true 时执行该语句块 --]
else
--[ 布尔表达式为 false 时执行该语句块 --]
end
3. if 嵌套语句
if( 布尔表达式 1)
then
--[ 布尔表达式 1 为 true 时执行该语句块 --]
if(布尔表达式 2)
then
--[ 布尔表达式 2 为 true 时执行该语句块 --]
end
end
函数
1. 可以将函数作为参数传递给函数
2. 可以返回多个结果值
3. 可以接受可变数目的参数,在函数参数列表中使用三点 ... 表示函数有可变的参数。
4. 可以通过 select("#",...) 来获取可变参数的数量
5. 可以通过 select(i,...) 来获取第i个参数值
eg: function foo(...)
for i = 1, select('#', ...) do -->获取参数总数
local arg = select(i, ...); -->读取参数
print("arg", arg);
end
end
运算符
1. 算数运算符
eg:
+ 加法 A + B 输出结果 30
- 减法 A - B 输出结果 -10
* 乘法 A * B 输出结果 200
/ 除法 B / A 输出结果 2
% 取余 B % A 输出结果 0
^ 乘幂 A^2 输出结果 100
- 负号 -A 输出结果v -10
2. 关系运算符
操作符 描述 实例
== 等于,检测两个值是否相等,相等返回 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。
3. 逻辑运算符
操作符 描述 实例
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。
4. 其他运算符
.. 连接两个字符串 a..b ,其中 a 为 "Hello " , b 为 "World", 输出结果为 "Hello World"。
# 返回字符串或表的长度。 #"Hello" 返回 5