不积跬步,何以至千里

导航

Lua 数据类型

Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。

Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。

前面几个看名字就能理解。比较特殊的,

userdata表示任意存储在变量中的C数据结构

threasd表示执行的独立线路,用于执行协同程序。

在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。

线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。

 

table是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。

table相当于JAVA中的array + map + hashset,应用很广。

-- 创建一个空的 table
local tbl1 = {}
 
-- 直接初始表
local tbl2 = {"apple", "pear", "orange", "grape"}

脚本执行结果为:

-- table_test.lua 脚本文件
a = {}
a["key"] = "value"
key = 10
a[key] = 22
a[key] = a[key] + 11
for k, v in pairs(a) do
    print(k .. " : " .. v)
end

$ lua table_test.lua
key : value
10 : 33

C语言数组把 0 作为数组的初始索引,在 Lua 里表的默认索引以 1 开始。

able 不会固定长度大小,有新数据添加时 table 长度会自动增长,没初始的 table 都是 nil。

posted on 2022-05-06 07:32  环保发动机  阅读(30)  评论(0编辑  收藏  举报