概述
开发环境搭建
Lua语法
1.第一个Lua程序
2.变量
print("******变量*******");
--lua当中的简单变量类型
-- nil number string boolean
-- lua 中所有的变量声明 都不需要声明变量类型 它会自动的判断类型
-- 类似C# 中的var
--lua中的一个变量 可以随便赋值 —— 自动识别类型
--通过type 函数 我们可以得到变量的类型
-- type 的返回值是 string
--lua中使用没有声明过的变量
--不会保错 默认值 是nil
print(b)
--nil 有点类似 C#中的null
print("******nil*******");
a = nil
print(a)
print(type(a))
print(type(type(a)))
--number 所有的数据都是number
print("*******number*******")
a = 1
print(a)
a = 1.2
print(a)
print(type(a))
print("*******string*******")
a = "123"
print(a);
print(type(a))
--字符串的声明,使用单引号或者双引号包裹
--lua里 没有char
a = '123'
print(a)
print(type(a))
print("*******boolean*******")
a = true
print(a)
a = false
print(a)
print(type(a))
--复杂数据类型
--函数 function
--表 table
--数据结构 userdata
--协同程序 thread(线程)
3.字符串操作
print("******字符串*******")
str = "双引号字符串"
str = '单引号字符串'
--获取字符串的长度
print("*******字符串长度**********")
s = "Sun木兮"
--一个汉字占3个长度
--英文符号 占1个长度
print(#s)
print("*******字符串多行打印*******")
--方式一
--lua中也是支持转义字符的
print("123\n123")
--方式二
s = [[山有
木兮
木有
枝]]
print(s)
print([[心悦
君兮
君]])
print("*******字符串拼接*******")
--方式一
--字符串拼接 通过..
print("123" .. "456")
s1 = "111"
s2 = 222
print(s1 .. s2)
s1 = 111
s2 = 222
print(s1 .. s2)
--方式二
print(string.format("山有木兮, 木%d", 67))
--%d: 与数字拼接
--%a: 与任何字符串拼接
--%s: 与字符串配对
--...
print("*******别的类型转字符串*******")
a = true;
print(tostring(a))
print("*******字符串提供的公共方法*******")
str = "abCdeFg"
--小写转大写的方法
--该方法不会改变原字符串,之后返回一个新字符串 (string大部分都不会改变原字符串)
print(string.upper(str))
print(str)
--大写转小写
print(string.lower(str))
--翻转字符串
print(string.reverse(str))
--字符串索引查找
print(string.find(str, "Cde")) --3 5
print(string.find(str, "C")) -- 3 3
--截取字符串
print(string.sub(str, 3)) --CdeFg
print(string.sub(str, 3, 4)) --重载方法
--重复字符串
print(string.rep(str, 1)) --返回的是原字符串
print(string.rep(str, 2)) --abCdeFgabCdeFg 返回两遍字符串
--字符串修改
print(string.gsub(str, "Cd", "**")) -- 返回 ab**eFg 1 1代表修改的次数
str = "abCdeFgCd"
print(string.gsub(str, "Cd", "**")) -- 返回 ab**eFg** 2
--字符转 ASCII码
a = string.byte("Lua", 1) --将字符串里的一个指定位置转为ASCII码
print(a)
--ASCII码 转字符
print(string.char(a))
4.运算符
print("*******运算符********")
print("*******算术运算符********")
-- 只有 + - * / % ^(幂运算)
-- 没有自增自减 ++ --
-- 没有复合运算符 += -= /= *= %=
-- 字符串 可以进行 算数运算符操作 会自动转成 number
--加法
print("加法运算" .. 1 + 2)
a =1
b = 2
print(a + b)
print("123" + 1) -- 输出:124
print("123.4" + 1) -- 输出:124.4
--减法
print("减法运算" .. 1 - 2) -- 输出 -1
print("123.4" - 1) -- 输出: 122.4
--乘法
print("乘法运算" .. 1 * 2)
print("123.4" * 2) -- 246.8
--除法
print("除法运算" .. 1 / 2) -- 0.5
print("123.4" / 2) -- 61.7
--取余
print("取余运算" .. 1 % 2) -- 1
print("123.4" % 2) -- 1.4
--幂运算
-- ^ 在lua中 该符号是幂运算 而在C#中^是异或
print("幂运算" .. 2 ^ 5)
print("123.4" ^ 2)
print("*******条件运算符********")
-- > < >= <= == ~=(不等于,C#中是!=)
print(3>1)
print(3<1)
print(3>=1)
print(3>=1)
print(3==1)
print(3~=1)
print("*******逻辑运算符********")
-- 逻辑与 C#中 && 逻辑或 C#中 || 取反 C#中 !
-- Lua中 与:and 或:or 非:not 在lua中and、or也支持短路
print(true and false) -- false
print(true and true) -- ture
print(true or false) -- true
print(false or false) -- false
print(not true) -- false
print("********短路测试*********")
print(false and print("123")) -- 输出 false
print(true and print("123")) -- 输出: 123 nil
print("*******位运算符********")
-- & | lua中不支持位运算符 需要我们自己实现
print("*******三目运算符********")
-- lua中也不支持三目运算符
5.条件分支语句
print("***********条件分支语句************")
a = 9
-- if 条件 then...end
--单分支
if a > 5 then
print("124")
end
--双分支
--if 条件 then...else...end
if a < 5 then
print("123")
else
print("321")
end
--多分支
--if 条件 then...elseif 条件 then...elseif 条件 then...else...end
if a < 5 then
print("123")
--lua中