美文网首页
lua 数据类型

lua 数据类型

作者: 死亡中走出来 | 来源:发表于2021-04-20 11:44 被阅读0次

一直在说要写个lua系列,已经开始了第一篇,这是第二篇。其实,对程序来说,什么最重要呢?当然是数据了,逻辑不过是对数据的处理,放到合适的位置。聊数据的话,从哪说起,先从数据类型吧!

lua中有8个基本类型:nil, boolean, number, string, userdata, function, thread 和 table。


lua数据类型.jpg

nil(空)

nil 类型没有任何有效值

boolean(布尔)

boolean 有2个值,true和false,在lua 中,nil, 0, false 都可以理解成false;其他为true;和其他语言不一样,其他语言0, false是false 的意思。

number(数字)

在lua里,只有一种数据类型number,不管是int ,long ,long long 等等,可以参考luaconf.h ,如下图所示:


lua数据类型number1.jpg

上图是有关一些精度的定义

lua数据类型number2.jpg

上图是所有和number数据类型有关的代码,感兴趣,可以参考这个相关代码。

string (字符串)

在lua中字符串用单引号或者双引号来包括。
关于字符串的所有操作,可以在lstrlib.c 中找到,大概有以下操作:


lua数据类型string.jpg

这个是lua库里相关的,如果有需要做扩展的,可以在此扩展自己的方法。

table (表)

在lua里,table是一个很重要的数据结构了,几乎所有的操作都是可以理解成对表的操作。当然,对表的操作,有以下几种,如下图所示:


lua数据类型table.jpg

这些操作在ltablib.c中,行号已经给出。可以参考。

function(函数)

函数,在lua里被看作是“第一类值”,另外,需要注意匿名函数和闭包函数。

匿名函数

testFunc(tab,
function(key,val)--匿名函数
        return key.."="..val;
end
);

闭包函数

function test(n)
   local function test1()  //闭包1
      print(n)
   end
   local function test2()  //闭包2
      n = n + 10
   end
   return test1, test2
end

thread(线程)

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

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

协程的主要操作如下图:

lua数据类型coroutine.jpg

userdata(自定义类型)

userdata 是一种用户自定义数据,用于表示一种由应用程序或 C/C++ 语言库所创建的类型,可以将任意 C/C++ 的任意数据类型的数据(通常是 struct 和 指针)存储到 Lua 变量中调用。

相关文章

  • Lua 完全教程

    Lua 环境安装 Lua 基本语法 Lua 数据类型 Lua 数据类型:nil(空) Lua 数据类型:boole...

  • 数据类型

    Lua 数据类型 lua是动态类型语言(定义变量时不用指定变量类型) lua有8个基本类型nil、boolean、...

  • Lua字符串的设计

    Lua字符串的设计 在Lua中字符串是一种被内化的数据类型。怎么理解被内化的含义呢?简单来说就是每个存放Lua字符...

  • 2017.4.28-29

    五一放假值班,打酱油了两天。 主要学习了lua的基本知识。lua的数据类型:number, string, boo...

  • Lua 基础数据类型

    Lua有8种基础数据类型:nil, boolean, number, string, function, user...

  • Lua table(表)

    table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数字、字典等。 Lua table 使用...

  • lua表(table)

    table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组、字典等。Lua table 使用关...

  • lua数据类型

    Lua中有8个基本类型分别为:nil、boolean、number、string、userdata、functio...

  • Lua数据类型

    Lua是一种比较自由的语言,Lua里面变量不要类型定义,只需要为变量赋值。 Lua中有8个基本类型分别为:nil、...

  • Lua 数据类型

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

网友评论

      本文标题:lua 数据类型

      本文链接:https://www.haomeiwen.com/subject/gniglltx.html