数学库

print(math.pi)-->π

print(math.huge)-->Lua中表示的最大数字

--[[

3.1415926535898

1.#INF

]]

print(math.rad(90))-->转换成弧度

print(math.deg(math.pi))-->转换成角度

math.random()用于生成伪随机数

不带参数,它将返回【0, 1]内均匀分布的伪随机实数

带参数n(整数),它将返回【1, n】内均匀分布的伪随机整数

带参数m,n(整数),它将返回【m, n】内均匀分布的伪随机整数

math.randomseed用于设置伪随机数生成器的种子数

math.randomseed(os.time())

math.randomseed(os.time())
for i=1,5 do
print(math.random(6))
end

table库

table是Lua中唯一的数据结构。
初始化与打印输出
arr = {}
for i=1,10 do
arr[i] = i * 10
end print("the length of arr is " .. #arr)
for i,v in ipairs(arr) do
print("arr[" .. i .. "] = " .. v)
end
lines = {luaH_set = 10, luaH_get = 24, luaH_present = 48}

for i,v in pairs(lines) do
print(i, v)
end

插入

table.insert(数组, [位置], 数据)
位置是可选的,不选择则插在数组末尾
当然在数组起始或中间插入,不是一个好的选择

删除
table.remove(数组,[位置])删除数组指定位置上的元素
位置同样是可选的,没有位置则从尾部删除。

连接
table.concat(数组, [分隔符], [起始位置], [终止位置])
arr = {}
for i=1,10 do
arr[#arr + 1] = i * 10
end print(table.concat(arr, " : ", 1, 10))

遍历嵌套数组

function printer(arr)
if type(arr) ~= "table" then
print(arr)
return
end
for i=1,#arr do
printer(arr[i])
end
end s = {{"a", "nice"}, "and", {"long"}, {"day"}}
--printer(s)
printer(s)
function printer(arr)
if type(arr) ~= "table" then
return arr
end
local res = {}
for i=1,#arr do
res[i] = printer(arr[i])
end
return table.concat(res, " ")
end local s = {{"a", "nice"}, "and", {"long"}, {"day"}} print(printer(s))

排序

table.sort( tablename, [sortfunction] )
sortfunction 可选。
sortfunction 有两个参数,如果希望第一个参数在排序结果中位于第二个参数面前,就应当返回true。
如果没有提供这个函数,sort就是用默认的小于操作。
arr = {10, 20, 50 ,30, 40}

table.sort(arr)

print(unpack(arr))
默认从小到大排序
等价于:
function sortfunction(x, y)

if x < y then

return true

else

return false

end

end

arr = {2, 5, 1, 3, 4}

table.sort( arr, sortfunction)

print(unpack(arr))


lua中无法对table的索引排序,只能将key保存在数组,再对数组排序。
lines = {
luaH_set = 10,
luaH_get = 24,
luaH_present = 48,
} arr = {}
for key in pairs(lines) do
arr[#arr + 1] = key
end print(unpack(arr))
table.sort(arr)
print(unpack(arr))


LUA学习笔记(第18-20章)的更多相关文章

  1. LUA学习笔记(第5-6章)

    x = a or b 如果a为真则x = a 如果a为假则x = b print(a .. b) 任何非nil类型都会被连接为字符串,输出 多重返回值 local s,e = string.find( ...

  2. LUA学习笔记(第1-4章)

    需要一种简单的脚本语言来代替批处理,它需要足够小巧,同时功能上也应该足够强劲,自然选择了LUA语言. 第一章 Hello World print('Hello World') print(" ...

  3. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十三章:计算着色器(The Compute Shader)

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十三章:计算着色器(The Compute Shader) 代码工程 ...

  4. [转]LUA 学习笔记

    Lua 学习笔记 入门级 一.环境配置 方式一: 1.资源下载http://www.lua.org/download.html 2.用src中的源码创建了一个工程,注释调luac.c中main函数,生 ...

  5. 《jQuery权威指南》学习笔记之第2章 jQuery选择器

    2.1 jQuery选择器概述 2.1.1 什么使选择器 2.1.2 选择器的优势: 代码更简单,完善的检测机制  1.代码更简单   示例2-1     使用javascript实现隔行变色 < ...

  6. Lua学习笔记4. coroutine协同程序和文件I/O、错误处理

    Lua学习笔记4. coroutine协同程序和文件I/O.错误处理 coroutine Lua 的协同程序coroutine和线程比较类似,有独立的堆栈.局部变量.独立的指针指令,同时又能共享全局变 ...

  7. Lua学习笔记:面向对象

    Lua学习笔记:面向对象 https://blog.csdn.net/liutianshx2012/article/details/41921077 Lua 中只存在表(Table)这么唯一一种数据结 ...

  8. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十三章:角色动画

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十三章:角色动画 学习目标 熟悉蒙皮动画的术语: 学习网格层级变换 ...

  9. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第七章:在Direct3D中绘制(二)

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第七章:在Direct3D中绘制(二) 代码工程地址: https:/ ...

随机推荐

  1. IntelliJ IDEA的常用设置及快捷键

    IntelliJ IDEA的常用设置及快捷键 基本设置 打开设置:ctrl+alt+s 修改主题.字体.字号 快捷键设置 创建项目和模块 标记源码文件 标记资源文件 设置jdk版本号 配置Tomcat ...

  2. Python 任务自动化工具 tox 教程

    在我刚翻译完的 Python 打包系列文章中,作者提到了一个神奇的测试工具 tox,而且他本人就是 tox 的维护者之一.趁着话题的相关性,本文将对它做简单的介绍,说不定大家在开发项目时能够用得上. ...

  3. Redis-NoSQL入门和概述(一)

    NoSQL简史及定义 NoSQL 这个术语最早是在 1998 年被Carlo Strozzi命名在他的轻量的,开源的关系型数据库上的,但是该数据库没有提供标准的SQL接口:在2009 年再次被Eric ...

  4. 浏览器从输入url 到页面展示完成响应过程

    用户从输入 url 到浏览器响应,呈现给用户的具体过程 1.用户在输入栏输入地址 (1) 如果有 beforeunload 事件会先执行判断继续还是跳出操作 (2) 浏览器进程识别是 地址还是关键字检 ...

  5. 78.纯 CSS 创作 Windows 启动界面

    原文地址:https://segmentfault.com/a/1190000015632759 学习后效果地址:https://scrimba.com/c/cPgWmZCg HTML code: & ...

  6. 如何设计一个优雅的RESTFUL的接口

    show me the code and talk to me,做的出来更要说的明白 我是布尔bl,你的支持是我分享的动力! 一 .引入 设计接口是我们开发人员的日常操作.当我们把接口交给前端人员时, ...

  7. 线性基 - 寻找异或第K大

    XOR is a kind of bit operator, we define that as follow: for two binary base number A and B, let C=A ...

  8. jqGrid以setGridParam方式postData,包含历史数据的问题

    系统在使用jqGrid时,如果某些页面的查询项是复选框,后台是数组接收的,就会出现传值不正确问题. 1.项目中某查询页面存在的复选框:待处理S1,正在处理S2,已处理S3: 使用jqGrid提交查询数 ...

  9. 内置3D对象-Unity3D游戏开发培训

    内置3D对象-Unity3D游戏开发培训 作者:Jesai 2018-02-12 19:21:58 五大面板: -Hierachy:当前场景中的物体 图 1-1 -Project:项目中的所有资源 图 ...

  10. 深入理解Java虚拟机-类加载连接和初始化解析

    不管学习什么,我一直追求的是知其然,还要知其所以然,对真理的追求可以体现在方方面面.人生短短数十载,匆匆一世似烟云,我认为,既然来了,就应该留下一些有意义的东西.本系列文章是结合张龙老师的<深入 ...