1.参考资料
https://www.runoob.com/lua/lua-variables.html
2.注释
-- 这是注释
print("hello")
--[[
这是多行注释
这是多行注释
]]--
3.约定俗成
- 一般约定一下划线开头连接一串大写字母的名字,比如_VERSION会认作lua内部全局变量。
- 一般情况,变量就是全局的
- 全局变量不需声明,给一个变量赋值之后就相当于创建了这个全局变量。
- 访问没创建的全局变量获得的值为nil,相当于js的null,如果你想删除一个全局变量,旧赋值nil。
- nil作比较的时候加双引号:
> type(x)
nil
> type(x) == nil
false
> type(x) == "nil"
true
4.基础类型:8种
nil,boolean,number,string,function,userdata(表示任意存储在变量中的C数据结构),thread(表示执行的独立线路,用于执行协同程序,即线程),table(数组)
5.8种基础类型的使用方式
- 可以用双引号,单引号,以及"[[]]"代表字符串
string1 = "this is string"
string2 = 'this is string'
string3 = [[
菜鸟教程
]]
- 算数运算符的+就是算数中的加
> print("2"+"3")
5
- table类型类似于js的数组和对象
-- 创建一个空的table
local tbl1 = {}
-- 创建一个有值的table
local tbl2 = {"apple", "pear", "orange"}
local tbl3 = {1 = "a", 2 = "b", 3 = "c"}
-- table.lua脚本内容
a = {}
a["key"] = "value"
key = 10
a[key] = 22
a[key] = a[key] + 11
-- table也可以这么取值
print(a.key)
for k, v in pairs(a) do
print(k.. " : " ..v)
end
-- 执行上述脚本
value
key : value
10 : 33
- local声明的是局部变量
6.方法
type: 测试类型
print(type("hello")) --> string
print(type(true)) --> boolean
赋值
a, b = 10, 11 --> a = 10; b = 11
--[[
当变量个数和值的个数不一致时,Lua会一直以变量个数为基础采取以下策略:
a. 变量个数 > 值的个数 按变量个数补足nil
b. 变量个数 < 值的个数 多余的值会被忽略
]]
a, b, c = 0, 1 --> a = 0, b = 1, c = nil
a, b = 0, 1, 2 --> a = 0, b = 1
计算字符串长度:用#,放在字符串前面
> len = "www.aaa.com"
> print(#len)
11
> print(#'www.aa.com')
10
for循环
-- for循环有4种:while循环,for循环,repeat...until,嵌套循环
-- 终止或跳过某循环:break(退出当前循环), goto(将程序控制点转移到下一个标签处)
-- while循环,执行前先判断条件
while(condition) do
something()
end
-- 无线循环
while(true) do
something()
end
-- for循环,可指定循环次数
a = {name="clw", age="15"}
for k,v in paris(a) do
print(k,v)
end
-- repeat...until,先执行一次,然后判断条件,直到条件为真停止
repeat
something()
until(condition)
-- table.lua脚本内容
a = {}
a["key"] = "value"
key = 10
a[key] = 22
a[key] = a[key] + 11
for k, v in pairs(a) do
print(k.. " : " ..v)
end
-- 执行上述脚本
key : value
10 : 33
-- table2.lua脚本内容
local tbl = {"a", "b", "c"}
for key, val in pairs(tbl) do
print("key", key)
end
-- 执行结果
key a
key b
key c
-- table3.lua脚本内容
a3 = {}
for i=1, 10 do
a3[i] = i
end
if判断以及函数function
-- if
function jisuan(n)
if(n == 0) then
return 1
elseif (n<0) then
return '0'
else
return n * jisuan(n-1)
end
end
print(jisuan(5)) --> 120
jisuan2 = jisuan
print(jisuan2(5)) --> 120