Lua是由标准C实现的解释型语言,它的执行效率比较高,通常作为脚本嵌入到应用程序中。
由于支持热更新,Lua在游戏开发领域应用普遍。作为从业人员,不得不来填这个大坑。
本文是Lua入门学习笔记,来源是泰课的一个Lua教程。这里主要记录Lua的语法,以及实现
简单的OOP。
Lua 快速入门(一)——基础语法
Lua 快速入门(二)——函数(Function)
Lua 快速入门(三)——表(Table)
Lua 快速入门(四)——多脚本执行
Lua 快速入门(五)——协程(thread)
Lua 快速入门(六)——基础OOP
Lua原生支持的数据类型共八种
简单变量类型:空值(nil)、数值(number)、字符值(string)、布尔值(boolean)。
复杂变量类型:表(table)、函数(function)、协程(thread)以及用户自定义数据(userdata)
Lua处理表和字符串的效率非常之高,加上元表的支持,开发者可以高效的模拟出需要的复杂数据类型(比如集合、数组等)。
Lua是弱类型语言,所有的变量申明都不需要申明变量类型,解析时自动判断类型。
通过 type 函数 ,我们可以得到变量的类型。返回值是一个string类型。
print("**********nil************")
--lua中使用没有声明过的变量
--不会报错 默认值 是nil
print(b) --nil
a = nil
print(a) --nil
print(type(a)) --nil
print(type(type(a))) --string
Lua中所有数值都是number,其本质是 C 中的 double类型。
print("**********number************")
a = 1
print(a) --1
print(type(a)) --number
a = 1.2
print(a) --1.2
print(type(a)) --number
字符值都是string类型,使用双引号或者单引号包裹。Lua中没有char类型。
print("**********string************")
str = "双引号字符串"
str2 = '单引号字符串'
--获取字符串的长度
print("**********字符串长度************")
s = "aBcdEfG字符串"
--不同编码汉字所占长度不同 2-4(UTF-8中占3个)
--英文字符 占1个长度
print(#s) --16
print("**********字符串多行打印************")
--lua中也是支持转义字符的
print("123\n123")
s = [[使用
多行
打印
]]
print(s)
print("**********字符串拼接************")
--字符串拼接 通过..
print( "123" .. "456" ) --123456
s1 = 111
s2 = 222
print(s1 .. s2) --111222
print(string.format("我是Canon,我今年%d岁了", 18))
--%d :与数字拼接
--%a:与任何字符拼接
--%s:与字符配对
--.......
print("**********别的类型转字符串************")
a = true
print(tostring(a)) --true
print("**********字符串提供的公共方法************")
str = "AbCdefg"
--小写转大写的方法
print(string.upper(str)) --ABCDEFG
--大写转小写
print(string.lower(str)) --abcdefg
--翻转字符串
print(string.reverse(str)) --gfedCbA
--字符串索引查找(这里返回两个值,表示开始和结束位置)
print(string.find(str, "Cde")) --3 5
--截取字符串
print(string.sub(str, 3, 4)) --Cd
--字符串重复(不咋用到)
print(string.rep(str, 2)) --AbCdefgAbCdefg
--字符串修改(这里返回两个值,第一个是修改后的字符串,第二个是修改的次数)
print(string.gsub(str, "Cd", "**")) --Ab**efg 1
--字符转 ASCII码 (将字符串中第几个字符转ASCII码)
a = string.byte("Lua", 1) --76
print(a)
--ASCII码 转字符
print(string.char(a)) --L
布尔类型boolean
print("**********boolean************")
a = true
print(a) --true
a = false
print(a) --false
print(type(a)) --boolean
Lua支持 +,-, *, /, %, ^等运算符。
不支持自增和自减,也不支持+= ,-= ,/= …等复合运算符。
print("**********算数运算符************")
--字符串 可以进行 算数运算符操作 会自动转成number
print("加法运算" .. 1 + 2)
a = 1
b = 2
a = a + b
a = a + 1
print(a + b) --6
print("123.4" + 1) --124.4
print("减法运算" .. 1 - 2)
print("123.4" - 1) --122.4
print("乘法运算" .. 1 * 2)
print("123.4" * 2) --246.8
print("除法运算" .. 1 / 2)
print("123.4" / 2) --61.7
print("取余运算" .. 1 % 2)
print("123.4" % 2) --1.4
--^ lua中 该符号 是幂运算
print("幂运算" .. 2 ^ 5)
print("123.4" ^ 2) --15227.56
print("**********条件运算符************")
-- > < >= <= == ~=
print(3>1) --true
print(3<1) --false
print(3>=1) --true
print(3<=1) --false
print(3==1) --false
--不等于 是 ~=
print(3~=1) --true
print("**********逻辑运算符************")
--与 或 非
--and or not
print( true and false) --false
print( true and true) --true
print( false and true) --false
print( true or false) --true
print( false or false) --false
print( not true) --false
print("**********位运算符************")
-- & | 不支持位运算符 需要我们自己实现
print("**********三目运算符************")
-- ? : lua中 也不支持 三目运算
-- lua中除了nil 和 false,其他值均判断为 true
-- 利用这个特性可以实现类似三目运算符的效果
if() and () or ()
条件分支语句 if,不支持switch语句
print("**********条件分支语句************")
a = 9
--if 条件 then.....end
--单分支
if a > 5 then
print("123")
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")
elseif a == 6 then
print("6")
elseif a == 7 then
print("7")
else
print("other")
end
if a >= 3 and a <= 9 then
print("3到9之间")
end
--lua中没有switch语法 需要自己实现
循环控制语句 while ,repeat,for
print("**********while语句************")
num = 0
--while 条件 do ..... end
while num < 5 do
print(num)
num = num + 1
end
print("**********do while语句************")
num = 0
--repeat ..... until 条件 (注意:条件是结束条件)
repeat
print(num)
num = num + 1
until num > 5 --满足条件跳出 结束条件
print("**********for语句************")
for i =2,5 do --默认递增 i会默认+1
print(i)
end
for i =1,5,2 do --如果要自定义增量 直接逗号后面写
print(i)
end
for i =5,1,-1 do --如果要自定义增量 直接逗号后面写
print(i)
end
Lua是弱类型的脚本语言,语法看起来和JavaScript有点相似,还是挺容易上手的。