数学库

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. Django2.2 Cache缓存的设计以及几种方式的 多级或单级缓存处理

    首先照例说明一下缓存的作用以及Django中可以用到的缓存方式: 缓存的作用是用于数据项的再次加载,在设定的时间内可以无压力刷新或者再次访问该数据信息 方式一数据库缓存(Django原生的---有代码 ...

  2. 从零开始安装Redis 集群(Linux CenOS7)

    从零开始安装Redis 集群(Linux CenOS7) 使用ISO安装CentOS7虚拟机 配置静态IP(参考Mac VMware Fusion CentOS7配置静态IP) 安装vim [root ...

  3. 「洛谷P2891」[USACO07OPEN]吃饭Dining 解题报告

    P2891 [USACO07OPEN]吃饭Dining 题目描述 Cows are such finicky eaters. Each cow has a preference for certain ...

  4. Spring中使用注解 @Scheduled执行定时任务

    注解@Scheduled 使用方式 注解@Scheduled 可以作为一个触发源添加到一个方法中,例如,以下的方法将以一个固定延迟时间5秒钟调用一次执行,这个周期是以上一个调用任务的完成时间为基准,在 ...

  5. 越来越清晰的TFRecord处理图片的步骤

    # 首先是模块的导入 """ os模块是处理文件夹用的 PIL模块是用来处理图片的 """ import tensorflow as tf ...

  6. 转:详解G1垃圾收集器

    G1垃圾收集器入门 说明 concurrent: 并发, 多个线程协同做同一件事情(有状态) parallel: 并行, 多个线程各做各的事情(互相间无共享状态) 参考: What’s the dif ...

  7. 替代 Hystrix,Spring Cloud Alibaba Sentinel 快速入门

    提起 Spring Cloud 的限流降级组件,一般首先想到的是 Netflix 的 Hystrix. 不过就在2018年底,Netflix 宣布不再积极开发 Hystrix,该项目将处于维护模式.官 ...

  8. 【模板】2-SAT问题

    问题简述 有 \(n\) 个变量,每个变量可赋为 \(1\) 或 \(0\) 必须满足一些限制条件,如" \(a\) 为1 或 \(b\) 为0 " " \(a\) 为0 ...

  9. 彻底理解Future模式

    先上一个场景:假如你突然想做饭,但是没有厨具,也没有食材.网上购买厨具比较方便,食材去超市买更放心. 实现分析:在快递员送厨具的期间,我们肯定不会闲着,可以去超市买食材.所以,在主线程里面另起一个子线 ...

  10. ls命名 | Linux统计文件夹内的文件个数

    ls命名 man ls -R 递归列出全部的目录内容 recusive -a 列出所有的文件(包括以 . 开头的隐藏文件) all -r 逆序排列 reverse -t 按照时间信息排序 time - ...