1.第一个程序“HelloWorld”
--输出"HelloWorld"
print("HelloWorld")
2.关于注释
跟其他的语言一样,lua中的注释有单行注释和多行注释
--这是单行注释
--[[
这是多行注释
这是多行注释
--]]
3.变量:默认情况下的变量总是全局变量,变量的默认值为nil
print(variable)
variable = "Hello Lua"
print(variable)
4.数据类型:
nil
|
只有nil属于这个类,表示一个无效值,在条件表达式中相当于false
|
boolean
|
包含两个值:false,true
|
number
|
双精度类型的实数和浮点数
|
string
|
字符串,有一对单引号或双引号
|
function
|
由C或lua编写的函数
|
userdata
|
任意存储在变量中的C数据结构
|
thread
|
线程
|
table
|
类似Map和数组,索引可以是数字或字符串,数组的话索引从1 开始
|
print(type("Hello Lua"))
print(type(10.4))
print(type(print))
print(type(type))
print(type(true))
print(type(nil))
print(type(type(x)))
4.1 nil
a.变量的默认值是nil
b.相对于全局变量和table,nil还有一个作用就是删除,给全局变量或table赋值nil,等同于把他们删掉
print(type(a))--变量的默认值是nil
tab1 = {key1 = "val1",key2 = "val2","val3"}
for k,v in pairs(tab1) do
print(k.."-"..v)
end
tab1.key1 = nil--删除key1
for k,v in pairs(tab1) do
print(k.."-"..v)
end
4.2 boolean
需要注意的是:只有false和nil表示false,其他的都表示true,所有的数字也都表示true.
--boolean
print(type(true))
print(type(false))
print(type(nil))
if 0 then
print("0 means true")
else
print("0 means false")
end
if 1 then
print("1 means true")
else
print("1 means false")
end
if nil then
print("nil means true")
else
print("nil means false")
end
4.3number
所有的数字都是Number类型
print(type(2))
print(type(2.256))
print(type(0.015))
print(type(2e+1))
print(type(0.2e-10))
print(type(0.1234567898765432101))
4.4 string
单行的string可以用""或''包围
多行的string可以用[[]]包围
--string
str1 = "this is a string"
str2 = 'this is a string'
str3 = [[
这是一个多行的string
这是一个多行的string
这是一个多行的string
]]
print(str1)
print(str2)
print(str3)
print("2" + 6)--程序会计算2+6的值
print("2 + 6")--输出"2 + 6"
print("-2e2"*"6")--输出计算结果
--连接字符串使用..
print("a".."b")
--获取字符串的长度#
str4 = "www.baidu.com"
print(#str4)
print(#"www.sina.com")
4.5table
--table
local tab1 = {}--定义一个空表
local tab2 = {"aa","bb","cc","dd"}--定义并初始化
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
4.6 function
--function
function fact(n)
if n == 0 then
return 1
else
return n * fact(n - 1)
end
end
print(fact(10))
fac = fact
print(fac(10))
4.7 thread 线程
在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。
线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。
4.8 userdata 自定义类型
userdata 是一种用户自定义数据,用于表示一种由应用程序或 C/C++ 语言库所创建的类型,可以将任意 C/C++ 的任意数据类型的数据(通常是 struct 和 指针)存储到 Lua 变量中调用。