2-Lua基本数据类型

文章介绍了Lua编程语言中的基本数据类型,包括nil、boolean、string、function、userdata、table和thread。特别强调了table作为关联数组的灵活性,以及function作为第一类值的特点。还提供了检测类型、操作字符串、布尔逻辑以及数字处理的示例。
摘要由CSDN通过智能技术生成

Lua数据类型

数据类型描述
nil无效值,在条件表达式中相当于false
boolean包含两个值:false true
string字符串由一对双引号或单引号来表示
function由C或Lua编写的函数
userdata任意存储在变量中的C数据结构
thread“关联数组”、数组的索引可以是数字、字符串、表类型。Lua中,table的创建是通过"构造表达式"来完成
–备注:最简单的表达式是{},用来创建一个空表

检测变量与值的类型

--备注:type、print是一个函数
print(type("hello world."))
print(type(10.4*3))
print(type(print))
print(type(type))
print(type(true))
print(type(nil))
print(type(type(1)))

str = "======"
print(str)

–nil

--pairs():遍历数组(貌似是循环链表,随机节点开始)
table = {key1="v1", key2="v2",ll="v3"}
for i, j in pairs(table) do
    print(i, j)
end
print(str)

table.key1 = nil
for i, j in pairs(table) do
    print(i, j)
end
print(str)

table = {"11", "22", "33"}
for k, v in pairs(table) do
    print(string.format("val[%d]=%s", k ,v))
end
print(str)

– boolean

--备注:Lua把false和nil看作是false,其他的(包括数字0)都为true
if false or nil then
    print("至少有一个是true")
else
    print("false 和 nil 都为false")
end

if 0 then
    print("数字 0 是true")
else
    print("数字 0 是false")
end
print(str)

–number

--备注:Lua默认只有一种数字类型(double类型),默认类型可在luaconf.h文件中修改
--double、string、function、boolean、nil
print(type(2))
print(type(2.1))
print(type(2e+1))
print(type("shd"))
print(type(pairs))
print(type(false))
print(TT)
print(str)

–string

--备注:Lua的字符串可以""或者‘’或者[[]]来表示
--备注:字符串连接用 .. 表示
str1 = "双引号"
str2 = "单引号"
str3 = "2个方括号"
print(str1)
print(str2)
print(str3)
print(str1 .. "|" .. str2 .. "|" .. str3)
print(str)

–Lua优先级

print("数字字符在进行算术运算时,隐式转换:string -> number,字符串除外(会报错)")
print("2"+6)
print(1e2+6)
--print("as"+6)
print("优先级图标如下:")
print("优先级" .. "|" .. "运算符")
print("8" .. "|" .. "^")
print("7" .. "|" .. "not、#、-(一元)")
print("6" .. "|" .. "*、/、%")
print("5" .. "|" .. "+、-")
print("4" .. "|" .. "...")
print("3" .. "|" .. ">、>=、<、<=、~=、==")
print("2" .. "|" .. "and")
print("1" .. "|" .. "or")

–table

--备注:Lua中表由"构造表达式完成",最简单的表示式是{},可直接初始化表
str4 = {}
str4["key"] = "value"
key = 1
str4[key] = 123
str4[2] = 456
str4[3] = str4[2] + str4[key]
print(key)
print(str4[key])
print(str4[2])
print(str4[3])
print(str)

–function

--备注:Lua中函数被看作是"第一类值(First-Class Value)",函数可以存在变量里
--备注:第一类值是指函数能向普通数值一样赋值给变量,也可作为参数传递给其他函数或做函数的返回值
--闭包:能够读取其他函数内部变量的函数
function function1(n)
    if n == 0 then
        return 1
    else
        return n * function1(n-1)
    end
end
print(function1(5))
function2 = function1
print(function2(5))
print(str)

–thread

--备注:Lua中最主要的线程是协程,拥有自己独立的栈、局部变量和指令指针
--可以和其他协同程序共享全局变量和其他大部分东西
--备注:线程与协程的区别:
--线程可以同时多个运行,协程任意时刻只能运行一个,并处于运行状态的协程只有被挂起时才会暂停
print(str)

–userdata(自定义用户类型)

--备注:表示一种由应用程序或c/c++语言库所创建的类型,可以将任意c/c++的任意数据类型的数据存储到Lua变量中调用
--struct和指针
print(str)

参考链接:
https://www.runoob.com/lua/lua-data-types.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值