二、Lua数据类型

文章目录

Lua是一种动态类型的语言。在语言中没有类型定义的语法,每个值都"携带"了它自身的类型信息。

在Lua中有8种基础类型:

  • nil(空)
  • boolean(布尔)
  • number(数字)
  • string(字符串)
  • userdata(自定义类型)
  • function(函数)
  • thread(线程)
  • table(表)

一、数据类型nil

nil是一种类型,它只有一个值nil,它的主要功能是用于区别其它任何值。

一个全局变量在第一次赋值前的默认值就是nil,将nil赋予一个全局变量等同于删除它。
Lua将nil用于表示一种"无效值"的情况,即没有任何有效值的情况。

二、数据类型boolean

lua中只有false和nil 为false,其余都为true

cpp 复制代码
if false or nil then
    print("nil is true")
else
    print("nil is false")
end
 
if 0 then
    print("0 is true")
else
    print("0 is false")
end

三、数据类型number

lua中,只有一种数字类型-number

8字节、双精度。

cpp 复制代码
print("测试number")
a = 10
print(type(a))

四、数据类型String

(一)用单引号或双引号:

cpp 复制代码
print('单引号字符串')
print("双引号字符串")

(二)可以包含换行的字符串

cpp 复制代码
i=[[
我是中国人
我是亚洲人
我是地球人
我是太阳系人
]]
print(i)

(三)字符串与数字做数学运算时,优先将字符串转换成数字

cpp 复制代码
print("测试字符串+")
print("1"+1)
print("1"+"1")

如果字符串不能转成数字将报错:

cpp 复制代码
print("测试字符串+")
print("1"+1)
print("1"+"1")
print("x"+1)

(四)计算字符串长度

cpp 复制代码
print(#"aa")

五、数据类型-table

table 可做数组和map

数组下标从1开始。

lua 复制代码
print("测试table")
tab1={}
tab2={"v1","v2","v3"}
tab3={key1="value1",key2="value2",key3="value3"}
 
print("-----打印tab3-----")
for k,v in pairs(tab3) do
    print(k.."="..v)  
end
 
print("-----打印tab2------")
for k,v in pairs(tab2) do
    print(k.."="..v)  
end
 
print("-----按数组索引打印数组------")
print(tab2[1])
print(tab2[2])
print(tab2[3])
 
print("-----nil相当于删除------")
tab3["key1"] = nil
for k,v in pairs(tab3) do
    print(k.."="..v)  
end

六、数据类型-function

lua 复制代码
function fib(n)
    if n == 1 or n == 2 then
        return 1
    else
        return fib(n-1)+fib(n-2)
    end
end
 
print("fib(10) = " ..fib(10))

七、数据类型-其他

(一)thread:协程

(二)userdata:存储c、c++数据类型

相关推荐
MATLAB代码顾问3 小时前
5大智能算法优化标准测试函数对比(Python实现)
开发语言·python
万粉变现经纪人5 小时前
如何解决 pip install llama-cpp-python 报错 未安装 CMake/Ninja 或 CPU 不支持 AVX 问题
开发语言·python·开源·aigc·pip·ai写作·llama
清风明月一壶酒5 小时前
OpenClaw自动处理Word文档全流程
开发语言·c#·word
其实防守也摸鱼5 小时前
CTF密码学综合教学指南--第五章
开发语言·网络·笔记·python·安全·网络安全·密码学
小郑加油6 小时前
python学习Day12:pandas安装与实际运用
开发语言·python·学习
AC赳赳老秦6 小时前
投标合规提效:用 OpenClaw 实现标书 / 合同自动审核、关键词校验、格式优化,降低废标风险
开发语言·前端·python·eclipse·emacs·deepseek·openclaw
KuaCpp6 小时前
C++面向对象(速过复习版)
开发语言·c++
wbs_scy7 小时前
Linux线程同步与互斥(三):线程同步深度解析之POSIX 信号量与环形队列生产者消费者模型,从原理到源码彻底吃透
java·开发语言
2zcode7 小时前
基于MATLAB元胞自动机(CA)的AZ80A镁合金动态再结晶(DRX)过程模拟
开发语言·matlab·动态再结晶
iCxhust7 小时前
微机原理实践教程(C语言篇)---A001闪烁灯
c语言·开发语言·汇编·单片机·嵌入式硬件·51单片机·微机原理