数学库

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. .net 异步编程总结

    异步的方式,就是,先发起IO.CPU密集工作等,然后函数返回,在IO.CPU密集工作等完成了以后——某个不确定的时刻,再执行后续的代码.   所以,如果使用异步代码,必须注意代码的执行顺序. 所以,异 ...

  2. 【汇编】AX内容依次倒排序

    ;P99,5.13,ax内容倒序 ;思路,ax左移一位最高位进cf里,bx右移一位把cf里值进bx的最高位, ;循环16次即实现ax16位内容倒序存储在bx中 DATA SEGMENT DATA EN ...

  3. CentOS8安装fastdfs6.06

    目录 一.准备环境 二.解压并编译安装 1.解压下载好的包 2.编译安装 2.1.编译安装 libfastcommon 2.2.编译安装 fastdfs 2.3.安装 nginx 和 fastdfs- ...

  4. 「SP122」STEVE - Voracious Steve 解题报告

    SP122 STEVE - Voracious Steve 题意翻译 Problem Steve和他的一个朋友在玩游戏,游戏开始前,盒子里有 n个甜甜圈,两个人轮流从盒子里抓甜甜圈,每次至少抓 1个, ...

  5. 「Luogu P1435」回文字串 解题报告

    题面 主要大衣大意: 给定一个字符串,求至少加入多少个字符才能使字符串变成回文字符串 下面就是我一本正经的胡说八道题解 思路: 很显然,这应该是一道典型的最长公共子序列的题目 因此,主要思想就是DP ...

  6. Spark学习笔记(二)—— Local模式

    Spark 的运行模式有 Local(也称单节点模式),Standalone(集群模式),Spark on Yarn(运行在Yarn上),Mesos以及K8s等常用模式,本文介绍第一种模式. 1.Lo ...

  7. JVM之GC(一)

    Java较C而言,最大的区别在于内存管理.JVM设有无用内存空间自动回收复用机制,也就是我们所说的GC. 之前说过,栈是为线程.为函数的执行分配内存的地方,用完即“销毁”,这里留待以后做深入探讨:堆是 ...

  8. 【转】15个超炫的HTML5效果

    英文原文:http://www.hongkiat.com/blog/15-html5-experiments/     翻译:iteye 乔布斯没有给Flash任何机会,微软新推出的Windows 8 ...

  9. 正则表达式grep命令

    grep命令 作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查:打印匹配到的行. 模式::由正则表达式字符及文本字符所编写的过滤条件 语法:grep [OPTIONS] PATTE ...

  10. Nginx的一理解(2)

    1.静态HTTP服务器 首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML.图片)通过HTTP协议展现给客户端. 配置: