lua | 数据类型与变量

news2024/11/19 1:33:08

目录

一、数据类型

8个基本类型

1.nil(空)

2.boolean(布尔)

3.number(数字) 

4.string(字符串)

 5.table(表 )

6.function(函数)

7.thread(线程)

8.userdata(自定义类型)

二、变量

全局变量、局部变量与表中的域

赋值语句


 本文章为笔者学习分享

学习网站:Lua 基本语法 | 菜鸟教程

一、数据类型

lua是动态类型语言,变量不需要类型定义,只需要为变量赋值。

8个基本类型

数据类型描述
nil表示一个无效值(条件表达式中相当于false)
boolean包含两个值:false和true
number表示双精度类型的实浮点数
string字符串由一对双引号或单引号来表示
function由C或者lua编写的函数
userdata存储在变量中的C数据结构
thread表示执行的独立路线,用于执行协同程序
tablelua中的table表其实是一个“关联数组”,数组的索引可以是数字、字符串或表类型。在lua里,table的创建是通过“构造表达式“来完成,最简单的构造表达式是{},用来创建一个空表。
print(type("Hello world"))      -- string
print(type(10.4*3))             -- number
print(type(print))              -- function
print(type(type))               -- function
print(type(true))               -- boolean
print(type(nil))                -- nil
print(type(type(X)))            -- string

1.nil(空)

含义:表示一种没有任何有效值,它只有一个值 -- nil,例如打印一个没有赋值的变量,便会输出一个 nil 值。

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

type(x)=="nil" --返回是“nil”字符串,是一个string类型

2.boolean(布尔)

 boolean类型只有两个值:ture和false

lua把false和nil看作是false,其他都是true,数字0也是true

type(true)=boolean

type(flase)=boolean

type(nil)=nil

3.number(数字) 

lua默认只有一种number类型:double双精度类型 

4.string(字符串)

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

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

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

字符串的连接使用的是两个..

 

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

 5.table(表 )

创建格式:table的创建是通过“构造表达式”来完成,最简单的构造表达式是{},用来创建一个空表。

通过在表内添加一些数据来初始化表

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

local tb1={} --空表
local tbl2={"1","2","3"};--初始化创建表

使用:lua的表其实是一个"关联数组",数组的索引可以是数字或字符串

local tb1={} 
tb1["key"]="value"
key=10 --key=10
a[key]=22
a[key]=a[key]+11 --value=33

初始索引:默认从1开始,而不是0

6.function(函数)

在lua中,函数被看作是”第一类值(First-Class Value)“

函数可以存在变量里

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

function A(key,val) 
function(key,val) --匿名函数

7.thread(线程)

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

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

8.userdata(自定义类型)

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

二、变量

全局变量、局部变量与表中的域

局部变量:使用local关键字定义的变量,未使用local进行显示声明的变量是局部变量。

局部变量的作用域:从声明处开始到所在语句块结束

应该尽可能的使用局部变量,有两个好处:

  • 避免命名冲突
  • 访问局部变量的速度比全局变量更快 

赋值语句

1.可以多个赋值 

格式:变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量

a,b=10,2*x  --a=10;n=2*x

顺序:先计算右边所有的值,然后再执行赋值操作

a=0 --a=0
b=a+1; --(1)a+1=1,(2)b=1

变量个数和值的个数不一致,lua会以变量个数为基础采取以下策略:

  • 变量个数>值个数,按变量个数补足nil
  • <,多余的值会被忽略
a,b,c=0,1  --a=0,b=1,c=nil
a,b=0,1,2  --a=0,b=1
a,b,c=0 --a=0,b=nil,c=nil 这个易错!

多值赋值经常用来交换变量,或将函数调用返回给变量,如下代码。fun()返回的值会一次赋值给变量a、b

a,b=fun()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/502775.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FIR滤波

参考来源&#xff1a; https://www.zhihu.com/question/323353814 本节主要围绕以下几个问题进行描述&#xff1a; 什么是FIR滤波器时域的卷积频域的相乘 关于FIR FIR滤波就是在时域上卷积的过程。将含噪声信号与低通滤波器的傅里叶逆变换值进行卷积&#xff0c;这个过程就是…

29 - 打家劫舍问题

文章目录 1. 打家劫舍I2. 打家劫舍II3. 打家劫舍III(1) 暴力递归超时(2) 记忆化搜索超时(3) 动态规划 1. 打家劫舍I 动态规划&#xff1a; dp[i] max(dp[i - 2] nums[i], dp[i - 1]); class Solution { public:int rob(vector<int>& nums) {if(nums.size() 1) re…

密码学:分组密码.(块密码:是一种对称密码算法)

密码学&#xff1a;分组密码. 分组加密(Block Cipher) 又称为分块加密或块密码&#xff0c;是一种对称密码算法&#xff0c;这类算法将明文分成多个等长的块 (Block) &#xff0c;使用确定的算法和对称密钥对每组分别加密或解密。分组加密是极其重要的加密体制&#xff0c;如D…

CE游戏特例说明

1.CE修改游戏特例说明 模拟器游戏不能直接修改游戏的程序代码&#xff08;即不能直接使用代码注入的手段修改code段代码&#xff09;&#xff0c;因为游戏并非使用平台语言所写&#xff0c;只有模拟器是使用平台语言写的&#xff0c;即壳是汇编写的&#xff0c;壳用来翻译跨平台…

设计模式 -- 中介者模式

前言 月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂) 央是一片海洋,海乃百川,代表着一块海绵(吸纳万物) 泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出) 月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容 希望大家一起坚持这个过程,也同…

瑞芯微RK3568开发板在智慧交通行业中的应用方案

智能交通安全监测系统是通过利用高性能处理器和先进的图像处理算法&#xff0c;实现对交通场景的实时监测、分析和预警&#xff0c;以提高交通安全水平。以下是基于RK3568处理器的智能交通安全监测系统产品的应用方案&#xff1a; 视频采集与处理&#xff1a; 使用RK3568处理器…

验证码短信 API 接入指南:Java 语言示例代码

短信验证码是一种通过短信发送的验证码&#xff0c;通常用于验证用户的身份、保障账户安全和防止恶意攻击等。短信验证码已经成为现代社会中不可或缺的一部分&#xff0c;广泛应用于各种场景&#xff0c;包括用户注册和登录、找回密码等等。 为了满足企业在账户安全验证和业务…

(详解)Object.keys() Object.values() Object.entries()

目录 一、Object.keys(obj) 二、Object.values() 三、Object.entries() 一、Object.keys(obj) 参数&#xff1a;要返回其枚举自身属性的对象返回值&#xff1a;一个表示给定对象的所有可枚举属性的字符串数组 处理对象&#xff0c;返回可枚举的属性数组 let person {name:…

【机器学习实战】Python基于K均值K-means进行聚类(九)

文章目录 1 前言1.1 K-means的介绍1.2 K-means的应用 2 demo实战演示2.1 导入函数2.2 创建数据2.3 拟合聚类2.4 查看结果 3 使用高级技术评估集群性能*3.1 导入函数3.2 整合数据3.3 计算 4 讨论 1 前言 1.1 K-means的介绍 K均值&#xff08;K-means&#xff09;是一种基于距离…

改写句子的软件有哪些-免费改写文章的软件

改写句子的软件 改写句子的软件是一种广泛应用于文字处理的工具&#xff0c;其主要作用是通过对原文中的语言结构和表述方式进行调整和优化&#xff0c;以改进文章的质量和可读性。改写句子的软件广泛用于新闻报道、科学文章、学术论文、书籍等各类文本材料中&#xff0c;旨在…

Elasticsearch的索引库和文档操作、RestClient的索引库和文档操作

一、Elasticsearch Linux系统通过Docker安装Elasticsearch、部署kibana 1.Elasticsearch Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elasticsearch 中。Kibana 使您能够以交互方式探索…

梅果提取物激增2782%?因字成分崛起|3月功效成分TOP100

全文速览 全文字数&#xff1a;6015字 阅读时长&#xff1a;8-12分钟 1.目前已有11款新原料成分进入监测期&#xff0c;三月新原料备案占比达27.1%。 2.天赐高新成为仅次于美国路博润的全球第二大卡波姆供应商&#xff0c;市占率将近两成。 3.氨基酸洗面奶凭多重功效替代皂…

Flink Dashboard的数据监控功能

一、数据反压 1.1 数据反压是啥 数据反压是在实时数据处理中&#xff0c;数据处理流的某个节点上游产生数据的速度大于该节点处理数据速度&#xff0c;导致数据堆积&#xff0c;从该节点向上游传递&#xff0c;一直到数据源&#xff0c;并降低数据源的摄入速度。导致数据反压…

如何远程内网电脑

要远程访问内联网计算机&#xff0c;您需要遵循以下一般步骤&#xff1a; 连接到与目标计算机相同的局域网 (LAN)。 这可能涉及到现场或使用 VPN 远程连接到 LAN。 获取目标计算机的 IP 地址或网络名称。 确保在目标计算机上启用了远程桌面访问。 使用远程桌面软件与目标计…

ASP.NET Core 8 中身份验证的改进

ASP.NET Core 团队正在改进 .NET 8 中的身份验证、授权和身份管理(统称为“身份验证”)。新的 APIs 将使自定义用户登录和身份管理体验变得更加容易。新的端点将在没有外部依赖的单页应用程序(SPA)中启用基于令牌的身份验证和授权。我们还将改进我们的指引和文档&#xff0c;使…

数据结构绪论

数据结构绪论 1.数据结构 数据结构 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。数据结构是一门研究非数值计算的程序设计问题中的操作对象&#xff0c;以及他们之间的关系和操作等相关问题的学科。 数据 数据:是描述客观事物的符号&#xff0c;是计算机中可以…

Dtop环球嘉年华全球Web3.0分布式私域电商生态发展峰会圆满举办

5月7日,Dtop环球嘉年华全球Web3.0分布式跨境私域电商生态发展峰会暨战略合作备忘录签署仪式在马来西亚首都吉隆坡隆重举办。此次峰会汇集了Dtop环球嘉年华韩国、新加坡、澳洲、泰国、印尼等国家的社区联合发起人,环球自治商学院地区代表及来自Dtop环球嘉年华不同国家的粉丝用户…

nas各种共享访问协议的使用(smb,nfs,ftp,ftps,sftp,afp,webdav)

使用群晖、UNRAID、FREENAS等NAS系统的小伙伴肯定会有传输文件的需求&#xff0c;无论是在本地局域网还是远端设备&#xff0c;这种情况下当然可以使用群晖的WEB管理界面中File Station&#xff0c;但是这种方式便捷性不够&#xff0c;于是nas与本地设备文件的传输最好的方式是…

lua | table表的使用操作

目录 lua table表 表的构造 Table的使用 table.concat() table.insert()与table.remove() table.sort() table.maxn() 本文章为笔者学习分享 学习网站&#xff1a;Lua 基本语法 | 菜鸟教程 lua table表 table&#xff1a;是lua的一种数据结构&#xff0c;用来帮助我们…

为什么Windows 10电脑运行缓慢?如何解决?

​虽然电脑是大家生活中的常用工具&#xff0c;但它经常会出现一些烦人的小问题&#xff0c;比如Windows 10系统在长时间使用后运行会变的缓慢。这时你必须等待一会才能打开/关闭电脑、打开和访问文件夹或软件&#xff0c;那要如何优化Windows 10电脑来解决运行缓慢的问题呢&am…