• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Lua > Lua中的一些常用函数库实例讲解

Lua中的一些常用函数库实例讲解

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了lua实例,lua脚本实例,lua游戏脚本实例,lua函数库,lua函数等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

前言

这篇文章将会来一些比较轻松的内容,就是简单的介绍一下Lua中几个常用的库。简单的说就是几个API的介绍。所以说,看起来比较容易,也没有多大的分量。就是纯粹的总结。使用库就是为了方便我们的开发,提高开发效率,同时也能保证代码的质量。希望大家以后也不要重复造轮子了。

数学库

数学库(math)由一组标准的数学函数构成。这里主要介绍几个常用的函数,其它的大家可以自行百度解决。

三角函数(sin,cos,tan……)

所有的三角函数都使用弧度单位,可以用函数deg(角度)和rad(弧度)来转换角度和弧度。示例代码:
print(math.sin(math.rad(30))) -- 0.5
</div>

谨记:三角函数的参数都是弧度,在实际使用中不要忘了,是弧度。

取整函数(floor,ceil)

floor:返回不大于x的最大整数;向下取整;
ceil:返回不小于x的最大整数;向上取整。示例代码:
print(math.floor(5.6)) -- 5
print(math.ceil(5.6)) -- 6
</div>

最大值和最小值(max,min)

max:取参数中的最大值;
min:取参数中的最小值。示例代码:
print(math.max(2, 3, 2, 14, 2, 30, -3)) -- 30
print(math.min(2, 3, 2, 14, 2, 30, -3)) -- -3
</div>

生成伪随机数的函数(random,randomseed)

在实际开发中,生成随机数的需求是经常有的。使用random和randomseed这两个函数就可以轻易的完成。math.random用于生成伪随机数,可以用3种方式来调用它:
(1)如果在调用时不提供任何参数,它将返回一个在区间[0, 1)内均匀分布的伪随机实数;
(2)如果提供了一个整数n作为参数,它将返回一个在区间[1, n]内的伪随机整数;
(3)如果提供了两个整数参数m和n,它将返回一个在区间[m, n]内的伪随机整数。
示例代码如下:
print(math.random()) -- 输出一个大于等于0,小于1的值
print(math.random(2)) -- 输出不是1就是2
print(math.random(3, 4)) -- 输出不是3就是4
</div>

如果你按照上面的代码运行,然后再看着我写的注释,你可能就要骂我了,什么破注释了,明显就是错的么?每次运行的输出结果都是一样的。是的,结果是一样的,这就要说到即将出场的math.randomseed。函数math.randomseed用于设置伪随机数生成器的种子数。(看到这里,我姑且认为你是已经有过一年编程经验的人员了,所以,你就不要问我什么是种子了,这种概念性的东西,我想百度百科或者维基百科比我更有指导意义)math.randomseed的唯一参数就是一个我们称为种子数的值。一般我们的做法是在一个程序启动时,用一个固定的种子数来调用它,以此初始化伪随机数生成器。那么如何设置这个math.randomseed的种子值呢?如果使用同一个种子值的话,每次得到的随机数就会是一样的,在实际开发中,一般都是使用当前时间作为种子值,比如:
math.randomseed(os.time())
</div>
这样就好了。一般在我们的程序启动时,初始化一次种子就足够了。我曾经傻傻的在一个循环中,使用math.random取随机数,每次都调用math.randomseed(os.time())设置种子值(为什么不可以?你可以自己试一试,看看结果。如果不懂,留下你的迷惑,我们继续交流)。
math.randomseed(os.time())
print(math.random()) -- 输出一个大于等于0,小于1的值
print(math.random(2)) -- 输出不是1就是2
print(math.random(3, 4)) -- 输出不是3就是4
</div>

这样就好了,运行一下,看看结果吧。

table库

table库是由一些辅助函数构成的,这些函数将table作为数组来操作(重点:作为数组来操作的)。

插入和删除函数

table.insert用于将一个元素插入到一个数组的指定位置,它会移动后续元素以空出空间。如果在调用table.insert时没有指定位置参数,则会将元素添加到数组末尾。示例代码:
local tb = {10, 20, 30}
table.insert(tb, 40) -- 在table的最后插入,结果为:{10, 20, 30, 40}
table.insert(tb, 2, 15) -- 在table的位置2插入,结果为:{10, 15, 20, 30, 40}
</div>
函数table.remove会删除并返回数组指定位置上的元素,并将该位置之后的所有元素前移,以填补空缺。如果在调用这个函数时不指定位置参数,它就会删除数组的最后一个元素。示例代码:
local tb = {10, 20, 30}
print(table.remove(tb)) -- 删除最后一个元素,并返回30;最后,tb = {10, 20}
print(table.remove(tb, 1)) -- 删除第一个元素并返回10;最后,tb = {20}
</div>

现在有了这两个操作,实现数据结构中的堆栈那就轻而易举了。等什么?自己试一试吧。

排序

对数组进行排序,这种需求,在实际开发中那是100%会遇到的。所以了,不会使用Lua对数组进行排序,那是会被别人笑掉大牙的。废话少说。在Lua中,我们可以用table.sort完成这个任务。它可以对一个数组进行排序,还可以指定一个可选的次序函数。这个次序函数有两个参数,如果希望第一个参数在排序结果中位于第二个参数值前,就应当返回true;如果没有提供这个函数,table.sort就使用默认的小于操作。实例代码:
local tb = {20, 10, 2, 3, 4, 89, 20, 33, 2, 3}
 
-- 默认是升序排序
table.sort(tb)
for _, v in ipairs(tb) do
    print(v)
end
 
print("=======")
 
-- 修改为降序排序
table.sort(tb, function (a, b) if a > b then return true end end)
for _, v in ipairs(tb) do
    print(v)
end
</div>
但是,在实际开发中,我们经常犯这样的错误,总是试图对一个table的索引进行排序。在table中,索引是一个无序的集合。如果对它们进行排序,则必须将它们复制到一个数组中,然后对这个数组进行排序。这就是我为什么一开始强调的,table库是对数组进行操作的。示例代码:
local tb = {x = 20, z = 10, y = 30, m = 2, n = 8} -- 这是一个key无序的table
-- 如果想按照key的升序排列,下列代码是不起作用的
table.sort(tb)
for k, v in pairs(tb) do
    print(k .. " = " .. v)
end
</div>
正确做法是将这个table的所有key放入到一个数组中,对这个数组进行排序。示例代码:

您可能想查找下面的文章:

  • 使用Lua编写Web端模板引擎的实例代码分享
  • Lua中遍历文件操作代码实例
  • Linux下编写Lua扩展so文件和调用方法实例
  • Lua中的类编程代码实例
  • Lua中写排序算法实例(选择排序算法)
  • 使用Lua作为C语言项目的配置文件实例
  • C语言中调用Lua函数实例
  • Lua多重继承代码实例
  • Lua中的函数代码实例
  • Lua UnPack函数用法实例

相关文章

  • Lua学习笔记之数据类型
  • Lua学习笔记之类型与值
  • Lua在各个操作系统中的开发环境配置教程
  • Lua教程(十五):输入输出库(I/O库)
  • Lua入门学习笔记
  • Lua极简入门指南(一):函数篇
  • Lua 数学库的所有函数功能作用一览
  • Lua table的concat方法使用实例
  • Lua中实现php的strpos()以及strrpos()函数
  • Lua中table的几种构造方式详解

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Lua中实现面向对象的一种漂亮解决方案
    • Lua编程中的一些基本语法整理
    • Lua中的迭代器浅析
    • Lua中rawset和rawget的作用浅析
    • Lua元表与元方法实例讲解
    • Lua中的弱引用介绍
    • lua操作excel方法分享
    • Lua下基本的网络编程示例
    • 在Mac OS中安装Lua的教程
    • Lua中for循环语句的使用教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有