Lua教程-基本数据类型

配置开发环境可以参考安装配置进行配置。

数据类型

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定义为00在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基本类型的用法及说明。


个人公众号

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨香异境

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值