二、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++数据类型

相关推荐
玩电脑的辣条哥2 小时前
Python如何播放本地音乐并在web页面播放
开发语言·前端·python
ll7788114 小时前
LeetCode每日精进:20.有效的括号
c语言·开发语言·算法·leetcode·职场和发展
Jackson@ML6 小时前
Python数据可视化简介
开发语言·python·数据可视化
赵琳琅6 小时前
Java语言的云计算
开发语言·后端·golang
lly2024066 小时前
jQuery 杂项方法
开发语言
赵琳琅6 小时前
MDX语言的安全开发
开发语言·后端·golang
开开又心心的学嵌入式7 小时前
C语言——指针进阶应用
c语言·开发语言
开开又心心的学嵌入式7 小时前
C语言——指针基础知识
c语言·开发语言
lonelyhiker7 小时前
javascript的原型链
开发语言·javascript·原型模式
夏梓蕙8 小时前
Elixir语言的软件开发工具
开发语言·后端·golang