一,基本语法&数据类型
1.hello world
print("Hello World!")
2.注释
–注释
–[[多行注释]]
3.标识符
用于定义一个变量,函数获取其他用户定义的项
字母或是下划线开头
a = 1
print(a)
4.关键字
一共就这么多
and | break | do | else |
---|---|---|---|
elseif | end | false | for |
function | if | in | local |
nil | not | or | repeat |
return | then | true | until |
while | goto |
5.变量
默认定义为全局变量
只有定义的变量前面加local,为局部变量
print("*************变量***********")
print(b)--nil
b = 10
print(b)--10
fun = function ()
b = b-1
local c = "cc"
end
fun()
print(b)--9
print(c)--nil
6.数据类型
取自菜鸟教程
数据类型 | 描述 |
---|---|
nil | 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。 |
boolean | 包含两个值:false和true。 |
number | 表示双精度类型的实浮点数 |
string | 字符串由一对双引号或单引号来表示 |
function | 由 C 或 Lua 编写的函数 |
userdata | 表示任意存储在变量中的C数据结构 |
thread | 表示执行的独立线路,用于执行协同程序 |
table | Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。 |
一些注意事项:
Number:Lua中所有数字都是number类型
nil:如果给全局变量或者 table 表里的变量赋一个 nil 值,相当于删除该变量
boolean:Lua 把 false 和 nil 看作是 false,其他的都为 true
string:单引号或是双引号都可以表示string
string1 = "this is string1"
string2 = 'this is string2'
双括号可以表示换行的字符串[[]]
table:默认索引从1开始,还有一些#table的很坑的地方要注意
表的遍历:
tbl = {"apple", "pear", "orange", "grape"}
for key, val in pairs(tbl) do
print("Key", key)
end
打印结果
Key 1
Key 2
Key 3
Key 4
7.function 方法/函数
函数可以存在变量中
fun=function ()--等价于 function fun()
tt = "123123"
end
fun()
print(tt)--123123
8.thread 线程
在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。
线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。
fun = function ()
print(123)
end
co = coroutine.create(fun)--创建协程
--协程的本质是一个线程对象
print(co)--打印结果:thread:地址
coroutine.resume(co)--执行协程 对应create创建协程,打印结果:123
fun2 = function ()
local i = 1
while true do
print(i)
i = i +1
--协程挂起
coroutine.yield(111) --yield可以带返回值
end
end
co3 = coroutine.create(fun2)
a,b = coroutine.resume(co3)
print(a,b)
a,b =coroutine.resume(co3)
print(a,b)
a,b =coroutine.resume(co3)
print(a,b)
打印结果:
即,a为协程是否挂起成功,b为 coroutine.yield(111) 的参数111
9.userdata(自定义类型)
用户自定义数据,通常是 struct 和 指针存储到 Lua 变量中调用。