Lua学习随笔
昨天刚立了FLAG,今天就来还愿了。因为是工作中接触到的,已经用了几次,比较熟悉。昨晚在晚上大概搜了下,看了两个教程,看进去了,今早又看了将近两小时,看到了些基础的东西。
我是在Windows上练习LUA,所以只用下个软件就可以开始了,非常方便。下载入口
下载后安装即可,使用方法就是首先打开SciTE,然后在里面直接敲代码,保存为以lua结尾的文件,按F5就可以看到运行结果了。
首先是注释,单行注释是
--单行注释
多行注释:
--[[
多行注释
多行注释
--]]
lua中变量不需要声明类型,默认所有变量都是全局变量,如果需要局部变量,需要使用local显式声明。
a = 5 -- 全局变量
local b = 5 -- 局部变量
lua中两个点“..”表示对字符串进行连接
print("字符串1" .. “字符串2”) --字符串1字符串2
Lua可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。
a, b = 10, 2*x -- a=10; b=2*x
当变量与值的个数不一致时:
a. 变量个数 > 值的个数 按变量个数补足nil
b. 变量个数 < 值的个数 多余的值会被忽略
对 table 的索引使用方括号 []。Lua 也提供了 . 操作。
t[i]
t.i -- 当索引为字符串类型时的一种简化写法
gettable_event(t,i) -- 采用索引访问本质上是一个类似这样的函数调用
在 Lua 里,table 的创建是通过”构造表达式”来完成,最简单构造表达式是{}
-- 创建一个空的 table
local tbl1 = {}
– 直接初始表
local tbl2 = {"apple", "pear", "orange", "grape"}
lua中的函数,可以类似变量进行互相赋值
function factorial1(n)
if n == 0 then
return 1
else
return n * factorial1(n - 1)
end
end
print(factorial1(5))
factorial2 = factorial1
print(factorial2(5))
boolean 类型只有两个可选值:true(真) 和 false(假),Lua 把 false 和 nil 看作是”假”,其他的都为”真”:
Lua 编程语言中数值for循环语法格式:
for var=exp1,exp2,exp3 do
<执行体>
end
var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var,并执行一次 “执行体”。exp3 是可选的,如果不指定,默认为1。
lua有两种for循环,上面是第一种,称为数值for循环,可以理解为正常版for。还有一种是泛型for循环,类似于java中的foreach,利用迭代器实现for循环。
a = {"one", "two", "three"}
for i, v in ipairs(a) do
print(i, v)
end
i是数组索引值,v是对应索引的数组元素值。ipairs是Lua提供的一个迭代器函数,用来迭代数组。
Lua 编程语言中 repeat…until 循环语法格式:
repeat
statements
until( condition )
循环条件判断语句(condition)在循环体末尾部分,所以在条件进行判断前循环体都会执行一次。
如果条件判断语句(condition)为 false,循环会重新开始执行,直到条件判断语句(condition)为 true 才会停止执行。
函数
lua函数使用function声明,默认为全局函数,如果要使用局部函数,类似于变量,在前面加个local即可。写法格式和平常的函数一样。lua中的函数可以作为参数传递给函数。
多返回值
Lua函数可以返回多个结果值,比如string.find,其返回匹配串”开始和结束的下标”(如果不存在匹配串返回nil)。
> s, e = string.find("www.runoob.com", "runoob")
> print(s, e)
--输出结果:5 10
可变参数
function add(...)
local s = 0
for i, v in ipairs{...} do --> {...} 表示一个由所有变长参数构成的数组
s = s + v
end
return s
end
print(add(3,4,5,6,7)) --->25
–select('#', …) 返回可变参数的长度
–select(n, …) 用于访问 n 到 select('#',…) 的参数
运算符
lua关系运算符中的不等于是“~=”
字符串连接符“..”
“#”返回字符串或表的长度