学过C\C++、C#等主流编程语言的人都清楚,这些语言中对数据类型都有明确的定义,整型必须定义为int、字符串必须定义为string等。而Lua对变量类型的定义是动态的,也就是说对于一个变量,我们不需要类型的定义,只需要对其赋值即可。动态的类型有好有坏,好的方面在于我们无需关心一个数据具体是什么类型,直接定义,快捷,简便,也符合了作为轻量级脚本语言的特性;坏的方面在于有时候代码写长写多了,我们会忘记某个变量一开始赋值时的类型,在之后一些参数传递上会出现类型不匹配等问题。不过作为嵌入其他程序中的脚步语言,Lua自身的代码量不会太长,所以我个人还是挺喜欢这种动态类型的定义的~

虽说是动态类型,Lua也有8个基本的类型分别为:nil、boolean、number、string、userdata、function、thread和table。

数据类型 描述
nil 一个无效值,其类型只包含nil
boolean true或者false
number 双精度类型的实浮点数
string 字符串类型
function 函数类型
userdata 存储在变量中的数据结构类型
thread 线程类型
table 表类型

nil

nil表示一个无效值、空值,类似C#语言中的null,所有未赋值的变量输出都为nil。

由于nil代表空值,我们可以用它来实现删除功能。给全局变量或table表里的变量赋值为nil,相当于把这个变量删除了,大家可以自己编写代码测试一下。

boolean

boolean类型就等同于布尔(bool)类型,其值只有两个:true(真)和false(假)。在Lua中,除了false和nil为“假”之外,其余的所有变量都为“真”。

如上脚本,其输出为:

number

Lua对number的定义为双精度类型的实浮点数,即所有Double类型的数字。

string

字符串类型,Lua中没有字符(char)的类型,所有一串字符串可以由一对双引号或单引号来表示,如果字符串分了好几行,我们还可以使用"[[ ]] "来将其包起来。

对于字符串的具体用法和操作我将在后面的博客中详细的介绍~

table

Lua中的table是我最喜欢的一个类型,和其他语言对表的创建一样,table的构造表达式由{}加上一些数据组成,一个最简单的构造表达式为{},也意味着创建一个空表。

table最大的特点在于其类似字典的key-value特性,即为一个关联数组。数组的默认索引以数字1开始,我们也可以自己为table中的值赋上索引,可以为字符串或数字。

table的长度会自动增加,所以在定义时也无需我们定义好长度。

 

如上代码,其输出为

function

function在Lua中为函数的意思,我们在定义一个函数时,只需以function加上函数名和形参,并以end结尾即可。函数的类型以及是否有返回值都是不需要定义的,只是我们自己得清楚这个函数具体会做些什么。

Lua中的函数还可以当做参数来传递,想想看在C#中我们还得通过委托才能实现这一功能,所以Lua脚本的编写是十分便捷的~

如上代码,其输出为打印出tab表的索引和内容:

thread

thread线程应用于一系列可并行执行的任务中,旨在节省时间,提高效率。学过爬虫程序的人就非常清楚线程的重要性。在Lua中,最主要的线程名为协同程序。

userdata

userdata是一种用户自定义数据

Lua学习篇③——数据类型相关推荐

  1. 【lua学习】2.数据类型

    [lua学习]2.数据类型 Lua中的数据类型 关于TValue自顶向下分析 TValue表示所有的Lua数据结构并带一个类型字段 Value表示所有的Lua数据结构 GCObject表示所有需要进行 ...

  2. lua学习之类型与值篇

    类型与值 lua 是动态类型的语言 在语言中没有类型定义的语法 每个值都携带有它的类型信息 8种基础类型 用 type 可以返回这个值的类型的名称 将一个变量用于不同类型,通常会导致混乱的代码 但合理 ...

  3. 从Lua学习JavaScript(一)

    学习 Lua 对于了解 Javascript 的人来说就是小菜一碟,Tyler Neylon 写了三篇文章来解释其中的原因,这是其中的第一篇. 这是通过 Javascript 来学习 Lua 系列文章 ...

  4. Lua语言基础入门 (Lua学习一)

    Lua语言快速入门 这篇博客主要是简单的讲解一下Lua的基础知识,涉及的东西不是很深,提供一些学习的思路,对具体的技术不展开介绍,网上资料很多写的都比我好,仅仅为了使用Lua,而不是做基于Lua的项目 ...

  5. Lua学习笔记6:C++和Lua的相互调用

    曾经一直用C++写代码.话说近期刚换工作.项目组中的是cocos2dx-lua,各种被虐的非常慘啊有木有. 新建cocos2dx-lua项目.打开class能够发现,事实上就是C++项目啦,只是为什么 ...

  6. python-基础学习篇(一)

    python基础学习(一) 不积硅步,无以至千里.基础的学习越加透彻,才能更清楚的理解和分析需求,我贯彻基础学习"永无止境"的理念,故把自学的知识梳理在博客中,基础学习篇无限更新. ...

  7. c语言初学知识点,C语言学习关于数据类型的一些知识点(初学者)

    1.整型常量的的前缀:(1)十进制常数无前缀. (2)八进制常数前缀为0,八进制常数无符号. (3)十六进制常数前缀为0X或0x. 注:在程序中是根据前缀来区分各种进制数的.因此在书写常数时不要把前缀 ...

  8. mysql的char在java中表示为_Java学习篇之-Mysql中varchar门类总结_mysql

    java学习篇之---mysql中varchar类型总结 Mysql中varchar类型总结 今天新做一个项目,需要自己进行数据库设计,发现自己对varchar的用法还不是很熟悉,所以查阅资料总结若下 ...

  9. c 语言程序编辑,C语言程序编辑学习篇—编程者说之C语言

    谈及C语言,我想凡是学过它的朋友都有这样一种感觉,那就是"让我欢喜让我忧."欢喜的是,C语言功能非常强大.应用广泛,一旦掌握了后,你就可以理直气壮地对他人说"我是电脑高手 ...

最新文章

  1. Http环境下的保持连接方式
  2. hibernate4调用mysql存储过程_hibernate调用存储过程
  3. java循环1000000000_Java11比Java8快多少,不是测试人员一眼也能看懂
  4. 2021华为软挑赛题_思路分析——实时更新,做多少更多少(六)
  5. yum -y --downloadonly --downloaddir=/root/ruiy update
  6. 【Derivation】 条件数学期望公式泊松分布推导(Poisson distribution)
  7. bugly怎么读_Bugly迁入
  8. HTML中怎么改变一条线的粗细
  9. AC695X_FCCBQB认证资料获取[杰理全系列]
  10. Vulnhub--bulldog
  11. 热身赛T3(奖学金评定)
  12. 在K8s上部署Redis 集群
  13. vue中v-for写在template上,不能加key怎么办
  14. (转载)纳豆的家庭制作、保存和食用
  15. java并发编程源码世界大师_求咕泡学院Java架构师第三期的完整版资料源码+视频,注(完整无解压密码)...
  16. 自动文摘评测方法:Rouge-L、Rouge-N
  17. 织梦 plus/download.php,织梦/plus/download.php url重定向漏洞的解决方法
  18. 特斯拉称正调查上海停车场特斯拉车辆自燃事故
  19. 使用光纤网络安装监控摄像头的6套方案
  20. [AWT] GridLayout

热门文章

  1. softmax的从零开始实现
  2. dell inspiron 只有一个飞行模式 没有wifi_连上WiFi就能打电话?“手机营业厅”中的神奇功能火了...
  3. Linux基础加实际操作演示
  4. React爬坑之路二:Router+Redux
  5. 实验三 类与对象(zxt)
  6. Non-UTF-8 code starting with ‘\xb5‘ in file D:\eclipse\Python\test\__init__.
  7. 7.3 数字化的资产管理
  8. 【办公软件有哪些】万彩办公大师教程丨PDF页面编辑
  9. 二十九、K8s最小服务漏洞3-gVisor沙箱
  10. MongoDB笔记之简单的增删改查