print("打印日志");--单行注释 --[[ 多行注释 --]] a = 30 --变量的类型,是由变量储存的数据决定
数据类型:
number:数值类型,可以存储整数和小数
boolean:布尔类型,只有true和false
string:字符串类型,单引号和双引号都可以
type()方法,可以获取一个变量的类型
print(type(123)) --打印出number print(type(true)) --打印出boolean print(type("aaa")) --打印出string
运算符号:
"+","-","*","/","%" :仅仅指数学意义上的加减乘除取余
"=" :赋值符号
"..":连接字符串
lua没有++ -- += -= *= /= %=
关系符号:
>大于 <小于 >=大于等于 <=小于等于 ==等于 ~=不等于
逻辑符号:
and:相当于&& or:相当于|| not:相当于! --]]
print(5 > 3 and 6 > 5) --true print(5 > 3 or 5 > 10) --true print(not true) --false
条件语句(lua中没有switch case)
if(布尔表达式)
then
代码体
elseif(布尔表达式)
then
代码体
else
代码体
end
num = 10 if (num > 5) then print("A") elseif (num < 4) then print("B") else print("C") end
循环语句
for语句:
for i = 初始值, 省略版条件表达式, 步长 do
代码体
end
while语句:
while(条件表达式) do
代码体
end
repeat until语句:
repeat
代码体 ****注意:条件为false才执行代码体
until(条件表达式)
break立即结束当前循环 lua没有continue
for i = 0, 10, 1 do print(i) end num1 = 0 while(num1 < 10) do print(num1) num1 = num1 + 1 end num2 = 0 repeat print(num2) num2 = num2 + 1 until(num2 < 10)
数组:
数组名 = { 数据1,数据2,数据3,数据n }
lua数组可以存放多种不同类型数据
*取数组长度:table.getn(数组名)
**特别注意:lua数组下标从1开始 lua数组长度不固定,声明数组后,仍然可以增加新的数据(给后续的索引位置继续赋值)
arrayTest = { 1, true, 1.111 } for i = 1, table.getn(arrayTest), 1 do print(arrayTest[i]) end --增加新数据 arrayTest[4] = "abc" print(arrayTest[4])
函数:
[局部/全局] function 函数名([参数列表])
函数体
end
特别注意:Lua代码顺序必须先定义函数,才能在下面调用
**Lua可以直接将函数当做参数来传递
--print(Hello()),这里会报错,代码顺序必须先定义函数才能调用 --无参无返回值 function Hello() print("asdasg") end --有参有返回值 function Add(a, b) return a + b end print(Add(1, 2)) --直接将函数当做参数来传递 function AddDel(a, b, func) return func(a, b) end testnum = AddDel(10, 20, Add) print(testnum)
变量作用域:
lua中的变量默认全部是全局变量,就算是声明在函数内的变量,也是全局变量. 如果想在lua中声明局部变量,需要使用"local"关键字声明
变量的默认值是nil
function Test() testValue = "absasd"--全局变量 print(testValue) local a --局部变量 print(a) --nil end Test() print(testValue) --可以直接使用全局变量testValue
函数作用域:
lua语言中的函数默认全部是全局函数,如果想设置为局部函数需要使用"local"关键字声明
仅对外部访问有用,相当于访问权限private,public
字符串三种表现形式:
双引号"string"
单引号'string'
两个中括号
*两个中括号包裹的字符串是原格式输出
*字符串连接用两个点..
str1 = "test1" str2 = 'test2' str3 = [[test3]] print(str1, str2, str3) print(str1..str2)
字符串操作:
string.upper(字符串):字母全部转大写
string.lower(字符串):字母全部转小写
string.reverse(字符串):将字符串进行位置反转
string.len(字符串):返回字符串长度,单个字母数字符号都长度为1,单个汉子长度为2
string.gsub(原始字符串,旧字符串,新字符串,[替换个数]):替换字符串,返回新的字符串
在原始字符串中查找旧字符串,如果找到了,就用新字符串把旧的替换掉;
替换次数可以不写,默认全部替换
print(string.upper("abcd")) --ABCD print(string.lower("EFGH")) --efgh print(string.reverse("abc"))--cba print(string.len("abc")) --3 strTest1 = "abcde" strTest2 = string.gsub(strTest1,"abc","a") print(strTest2) --ade
字符串格式化:
string.format(字符串格式,变量1,变量2,变量n)
%s表示字符串
%d表示整数数字
%f表示小数,保留有效小数位 %.1f保留1位小数,%.2f保留2位小数
str = string.format("name:%s,age:%d,money:%.2f", "asd", 18, 1.54321) print(str) --name:asd,age:18,money:1.54