配置开发环境可以参考安装配置进行配置。
数据类型
Lua语音有8种数据类型:nil,boolean,number,string,function,userdata,thread,table
数据类型 | 说明 |
---|---|
nil | 表示无效值 |
boolean | 包括两个值true和false |
number | 表示双精度浮点数 |
string | 字符串 |
function | 函数定义 |
userdata | 表示任意存储在变量中的C数据结构 |
thread | 线程 |
table | 是一个关联性数组,数组的索引可以是数字或字符串 |
nil(空)
Lua将nil用于表示“无效值”,一个变量在赋值前默认是nil。
local name
--- 输出nil
print(name)
boolean(布尔)
布尔类型的值有true和false,在Lua中的nil和false都认为是“假”,其他的都为“真”
local name
local flag = true
local zero = 0
if name then
print("test")
else
--由于name初始默认为nil,所以会输出not test
print("not test")
end
if flag then
--flag初始定义为true,所以输出flag
print("flag")
else
print("not flag")
end
if zero then
--zeor定义为0,0在Lua中为“真”,所以输出zero
print("zero")
else
print("not zero")
end
number(数字)
表示实数,当然可以用数组函数math来进行计算,关于math后面在说。
--输出的是number类型
print(type(1))
print(type(1.1))
print(type(0.2))
string(字符串)
字符串有两种方式表示,单引号和双引号
- 单引号, 例如:‘hello’
- 双引号,例如:“hello”
local nameStr1 = 'hello'
local nameStr2 = "hello"
print(nameStr1)
print(nameStr2)
function(函数)
函数可以存储在变量中,可以通过参数传递给其他人,也可以作为其他函数的返回值。
function muti(x , y)
local z = x*y
return z
end
local result = muti(1 , 2)
print(result)
userdata(自定义类型)
userdata 是一种用户自定义数据,用于表示一种由应用程序或 C/C++ 语言库所创建的类型,可以将任意 C/C++ 的任意数据类型的数据(通常是 struct 和 指针)存储到 Lua 变量中调用。
thread(线程)
在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。
线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。
协同程序(coroutine)的几个方法:
方法 | 描述 |
---|---|
coroutine.create() | 创建coroutine,返回coroutine, 参数是一个函数,当和resume配合使用的时候就唤醒函数调用 |
coroutine.resume() | 重启coroutine,和create配合使用 |
coroutine.yield() | 挂起coroutine,将coroutine设置为挂起状态,这个和resume配合使用能有很多有用的效果 |
coroutine.status() | 查看coroutine的状态,注:coroutine的状态有三种:dead,suspend,running |
coroutine.wrap() | 创建coroutine,返回一个函数,一旦你调用这个函数,就进入coroutine,和create功能重复 |
coroutine.running() | 返回正在跑的coroutine,一个coroutine就是一个线程,当使用running的时候,就是返回一个corouting的线程号 |
--定义一个函数方法
function coroutineFunc(x , y)
print("sum =" , x+y)
end
--创建coroutine,返回coroutine
cor = coroutine.create(coroutineFunc)
print(cor)
--启用coroutine
coroutine.resume(cor , 1 , 2)
--打印状态
print(coroutine.status(cor))
以上输出结果为:
thread: 0231D248
sum = 3
dead
table(表)
实现了一种抽象的“关联数组”。“关联数组” 是一种具有特殊索引方式的数组,索引通常是字符串(string)或者 number 类型,但是不能为nil。
local tableDemo = {"hello" , name = "Erick" , ['city'] = "BeiJing"}
print(tableDemo.name)
print(tableDemo.city)
print(tableDemo['city'])
print(tableDemo[1])
输出结果
Erick
BeiJing
BeiJing
hello
以上是Lua基本类型的用法及说明。
![个人公众号](https://i-blog.csdnimg.cn/blog_migrate/43b60a3159d8454c1a8006195e55d3e7.jpeg)