lua的基础

Lua是一种动态类型语言,其数据类型包括nil、boolean、number、string、userdata、function、thread和table。nil用于表示无效值,boolean有true和false,number是双精度浮点数,string可以用引号定义,table是关联数组。lua中的变量默认为全局,用local声明为局部。
摘要由CSDN通过智能技术生成

数据类型

lua 是动态类型语言,变量不需要类型定义,可直接赋值。 值可以存储在变量中,作为参数传递或结果返回。lua 中有 8 个基本类型分别为: nil、boolean、number、string、userdata、function、thread 和 table

数据类型

描述

nil

这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)

boolean

包含两个值:false和true

number

表示双精度类型的实浮点数

string

字符串由一对双引号或单引号来表示

userdata

由 C 或 lua 编写的函数

function

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

thread

表示执行的独立协程,用于执行协同程序

table

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

nil(空)

  • nil 类型表示一种没有任何有效值,它只有一个值 – nil,例如打印一个没有赋值的变量,便会输出一个 nil 值

  • 对于全局变量和 table,nil 还有一个"删除"作用,给全局变量或者 table 表里的变量赋一个 nil 值,等同于把它们删掉

  • nil 作比较时应该加上双引号 "

boolean(布尔)

  • boolean 类型只有两个可选值:true(真) 和 false(假),lua 把 false 和 nil 看作是 false,其他的都为 true,数字 0 也是 true

number(数字)

  • 默认只有一种 number 类型 – double(双精度)类型(默认类型可以修改 luaconf.h 里的定义)

string(字符串)

  • 字符串由一对双引号或单引号来表示

  • 也可以用 2 个方括号 “[[]]” 来表示"一块"字符串

  • 在对一个数字字符串上进行算术操作时,会尝试将这个数字字符串转成一个数字

  • 使用 # 来计算字符串的长度,放在字符串前面

function(函数)

  • 函数是被看作是"第一类值(First-Class Value)",函数可以存在变量里

  • function 可以以匿名函数(anonymous function)的方式通过参数传递

thread(线程)

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

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

userdata(自定义类型)

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

变量

  • 变量在使用前,必须在代码中进行声明,即创建该变量。

  • 编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值。

  • lua 变量有三种类型:全局变量、局部变量、表中的域。

  • lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量。

  • 局部变量的作用域为从声明位置开始到所在语句块结束。

  • 变量的默认值均为 nil。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值