单行注释:--
多行注释:--[[
--]]
lua一共有8种数据类型
1.nil 空类型 (声明一个变量没有初始化,默认为nil)
2.number 数值类型
3.boolean 布尔值 (只有false和nil为false,其他都为true,包括0)
4.string 字符串类型
5.userdata 自定义类型
6.function 函数类型
7.thread 线程
8.table 表
print(type(nil))
print(type(1.23))
if 0 then
print("0为真")
end
print(type("string"))
function fun()
end
print(type(fun))
print(type({}))
结果如下:
当我们需要定义一个局部变量需要在变量前加上 local关键字
function func()
local x = 1
j = 1
end
func()
print(x)
print(j)
lua里面的3种循环:
1.while() do
end
2.for i=a(初始化),b(目标条件),c(自增,如果没有指定就默认1) do for k,v in iparis(参数为需要遍历的对象) do (类似其他语言的foreach)
end end
3.repeat do
end
until(条件,false继续执行循环体,true跳出循环)
重点是第三个循环 ,类似与do while ,首先是先执行一次 ,再检测条件,条件与do while相反
i = 0
repeat do
i = i + 1
print(i)
end
until(i >= 10)
函数
私有函数声明为 :
local function function_name()
end
参数数量可以固定的也可以可变的, ...表示为可变参数
函数可以有多个返回值
function func(table,...)
return table,...
end
print(func({},1,2,"string"))
算术运算符
1.+ 加
2.- 减
3.* 乘
4./ 除
5.% 除于
6.^ 乘幂
7.- 负号
关系运算符
1.== 等于
2.~= 不等于
3.> 大于
4.< 小于
5.>= 大于或等于
6.<= 小于或等于
逻辑运算符
1.and 与
2.or 或
3.not 非
字符串的3种定义方式
1.'lua'
2."lua"
3.[[lua]]
数组
数组的下标默认从1开始 ,可以指定下标,下标也可以为负
array = {"a","b","c"}
for k,v in ipairs(array) do
print(k)
end
arr = {}
for i=-1,1,1 do
arr[i] = "value -- "..i
end
for i=-1,1,1 do
print(arr[i])
end
刚才发现了个问题,如果我们指定下标为负的数组,如果使用泛型for遍历:
arr = {}
for i=-1,1,1 do
arr[i] = "value"..i
end
for k,v in ipairs(arr) do
print(k.."--"..v)
end
由输出结果得知:lua内置的迭代器ipairs是从下标1开始迭代的,如果我们想从下标为负的索引迭代,只能我们自己写迭代函数咯,或者使用pairs
arr = {}
for i=-3,3,1 do
arr[i] = "value"..i
end
for k,v in pairs(arr) do
print(k.."--"..v)
end
从结果看,pairs迭代是看不出声明规律,而且索引之间的间隔不能超过1,到时候看看pairs内部是怎么实现的。
其他知识点
.. 拼接
# 获取字符串和表的长度
select(#,...) 获取可变参数长度