Lua学习之类型与值

2024-03-08 22:48
文章标签 类型 学习 lua 与值

本文主要是介绍Lua学习之类型与值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Lua是一种动态语言,在语言中没有类型定义的语法。

 

在lua中有8中基本的类型:

1.nil(空)

2.boolean

3.number(数字)

4.string(字符串)

5.userdata(自定义类型)

6.function(函数)

7.thread(线程)

8.table(表)

函数type可根据一个值返回类型的名称。

print(type("Hello world")) ------------->string

由于变量是没有预定义类型的,所以

a = 10;print(type(a)); --------------------->number

a = print;        ------------------------>注意这个是合法的print(type(a)); ----------------------->function

这里我们重点来看下string类型

Lua的字符串是不可变的值,如果修改只能创建一个新的字符串:

a = "one";
b = string.gsub(a,"one","two");
print(a);-------------->one
print(b);-------------->two

Lua的字符串和其他Lua对象一样,都是采用自动内存管理机制所管理的对象。

另外还可以用一对匹配的双方括号来界定一个字母字符串,这样就可以延伸多行,但Lua不会解释其中的转义字符。

如:

page = [[
<html>
<head>
</head>
</html>
]]
write(page);

Lua提供了运行时数字和字符串自动转换。

print("20"+1); ------------------>21
print("Hello"+2);---------------->错误

相反,Lua也可以将字符串转换成一个数字

print(10 .. 20);------------------>1020

在Lua中 .. 表示字符串连接操作符。

 

接着我们来看看table类型

a = {};------------------->创建一个table,并引用到变量a中

for i=1,1000 do a[i] = i * 2 end;

print(a[9];) -------------------->18

print(a["x"]);-------------------->nil

 

我们还可以将a["x"]写成a.x,但是注意a.x与a["x"]的区别。

 

 

长度操作符“#”用于返回一个数组或者线性表的最后一个索引,我们可以用他来干很多有意义的事情

遍历table:

for i=1,#a do

  print(a[i]);

end

删除最后一个元素:

a[#a] = nil;

 

末尾添加元素:

a[#a+1] = v;

 

当一个数组中间有空隙也就是说有元素是nil,那么#就认为这个空元素是数组结束的标志。

 

如果真的需要处理那些有空隙的数组,那么就需要用到函数table.maxn,它将放回数组的最大索引的元素。

 

a = {};

a[10000]  = 1;

print(table.maxn(a)); ---------------->10000

 

接下来我们来看下Lua里面的function函数

lua语言中的函数可以存储在变量中,可以通过参数来传递给其他函数,好可以作为其他函数的返回值。

 

Lua既可以调用自身的函数,也可以调用c语言的函数。

 

userdata和thread

 

userdata用于表示一种由应用程序或者c语言库所创建的新类型。

 

转载于:https://www.cnblogs.com/CaomaoUnity3d/p/4609084.html

这篇关于Lua学习之类型与值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/788659

相关文章

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

Redis的Zset类型及相关命令详细讲解

《Redis的Zset类型及相关命令详细讲解》:本文主要介绍Redis的Zset类型及相关命令的相关资料,有序集合Zset是一种Redis数据结构,它类似于集合Set,但每个元素都有一个关联的分数... 目录Zset简介ZADDZCARDZCOUNTZRANGEZREVRANGEZRANGEBYSCOREZ

IDEA如何将String类型转json格式

《IDEA如何将String类型转json格式》在Java中,字符串字面量中的转义字符会被自动转换,但通过网络获取的字符串可能不会自动转换,为了解决IDEA无法识别JSON字符串的问题,可以在本地对字... 目录问题描述问题原因解决方案总结问题描述最近做项目需要使用Ai生成json,可生成String类型

Mysql 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT

Redis的Hash类型及相关命令小结

《Redis的Hash类型及相关命令小结》edisHash是一种数据结构,用于存储字段和值的映射关系,本文就来介绍一下Redis的Hash类型及相关命令小结,具有一定的参考价值,感兴趣的可以了解一下... 目录HSETHGETHEXISTSHDELHKEYSHVALSHGETALLHMGETHLENHSET

Python中异常类型ValueError使用方法与场景

《Python中异常类型ValueError使用方法与场景》:本文主要介绍Python中的ValueError异常类型,它在处理不合适的值时抛出,并提供如何有效使用ValueError的建议,文中... 目录前言什么是 ValueError?什么时候会用到 ValueError?场景 1: 转换数据类型场景

C# dynamic类型使用详解

《C#dynamic类型使用详解》C#中的dynamic类型允许在运行时确定对象的类型和成员,跳过编译时类型检查,适用于处理未知类型的对象或与动态语言互操作,dynamic支持动态成员解析、添加和删... 目录简介dynamic 的定义dynamic 的使用动态类型赋值访问成员动态方法调用dynamic 的