Lua
Lua
Bob__yuan
这个作者很懒,什么都没留下…
展开
-
【UE4】Unlua luaL_dostring、luaL_loadstring
luaL_loadstring 之后调用 lua_pcall 会出错。 luaL_dostring 的定义如下:#define luaL_dostring(L, s) \ (luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0))结论 用 luaL_dostring。。原创 2020-07-13 18:06:56 · 1459 阅读 · 0 评论 -
Lua 迭代器和闭包
内容来自《Lua程序设计(第四版)》18.1节 —— 迭代器和闭包。 迭代器(iterator)是一种可以让我们遍历一个集合中所有元素的代码结构。在 Lua 语言中,通常使用函数表示迭代器:每一次调用函数时,函数会返回集合中的“下一个”元素。一个典型的例子就是 io.read,每次调用该函数时它都会返回标准输入中的下一行,子啊没有可以读取的行时返回 nil。 所有迭代器都需要在连续的调...原创 2020-02-14 16:12:47 · 332 阅读 · 0 评论 -
Lua 队列及双端队列
在 Lua 语言中实现队列(queue)的一种简单方法是使用 table 标准库中的函数 insert 和 remove。这两个函数可以在一个数组的任意位置插入或删除元素,同时根据所做的操作移动其他元素。不过,这种移动对于较大的结构来说开销很大。一种更高效的实现是使用两个索引,一个指向第一个元素,另一个指向最后一个元素。使用这种实现方式,我们就可以像在如下方式以 O(1)O(1)O(1) 的时...原创 2020-02-12 10:15:37 · 906 阅读 · 0 评论 -
Lua 稀疏矩阵相乘
function mult(a, b) local c = {} for i = 1, #a do local resultline = {} -- 即 c[i] for k, va in pairs(a[i]) do -- 'va' 即 a[i][k] for j, vb in pairs(b[k]) do -- 'vb' 即 b[k][j] loca...原创 2020-02-12 09:40:18 · 746 阅读 · 0 评论 -
Lua 文本中出现频率最高的单词
本文借鉴《Lua程序设计(第四版)》第十一章 – “小插曲:出现频率最高的单词”。 本文开发一个读取并输出一段文本中出现频率最高的单词的程序。主要数据结构是一个记录文本中出现的每一个单词及其出现次数之间关系的表。使用这个数据结构,该程序可以完成3个主要任务:读取文本并计算每一个单词的出现次数按照出现次数的降序对单词列表进行排序输出有序列表中的前 nnn 个元素 通过 io.l...原创 2020-02-11 11:34:13 · 377 阅读 · 0 评论 -
Lua 小试函数式编程,PBM绘制二维区域
借鉴《Lua程序设计(第四版)》第9章 – 闭包,9.4节 – 小试函数式编程。 目标是开发一个用来表示几何区域的系统,其中区域即为点的集合。 为了实现这样的一个系统,首先需要找到表示这些图形的合理数据结构。我们可以尝试使用面向对象的方案,利用继承来抽象某些图形;或者,也可以直接利用特征函数(characteristic or indicator function)来进行更高层次的抽象...原创 2020-02-10 12:36:25 · 530 阅读 · 0 评论 -
Lua 函数重定义,以及安全的运行时环境(沙盒)
本文章借鉴《Lua程序设计(第四版)》。一、函数重定义 在Lua中,由于函数可以被保存在普通变量中,因此在Lua语言中可以轻松地重新定义函数,甚至是预定义函数。这种机制也正是Lua语言灵活的原因之一。通常,当重新定义一个函数的时候,我们需要在新的实现中调用原来的那个函数。例如,假设要冲i性能定义函数sin以使其参数以角度为单位而不是以弧度为单位。那么这个新函数就可以先对参数进行转换,然后...原创 2020-02-10 10:01:26 · 1291 阅读 · 0 评论 -
Lua ipairs、pairs
先给出 lua 官方 reference 中 ipairs 和 pairs 的解释:pairs (t)Returns three values: the next function, the table t, and nil, so that the construction for k,v in pairs(t) do body end will iterate over allke...原创 2019-07-22 17:32:50 · 597 阅读 · 0 评论 -
Lua 变长参数以及 printf 实现
Lua 变长参数 Lua 中的函数可以接受不同数量的实参。例如:在调用print时可以传入一个、两个或多个实参。形参中的三个点(…)表示该函数可接受不同数量的实参。当这个函数被调用时,它的所有参数都会被收集到一起,这部分收集起来的实参称为这个函数的“变长参数”。 一个函数要访问他的变长参数时,仍需要用到 “…”,只是此时的 “…” 是作为一个表达式来使用的,其行为类似于一个具有多重返回值的函数...原创 2019-07-24 20:16:46 · 758 阅读 · 0 评论 -
Lua 利用 match 和正则表达式去除字符串首尾空格
正则表达式中,字符含义这篇文章写的不错,https://www.cnblogs.com/meamin9/p/4502461.html。 其中 ^ 和 & 分别代表字符串首尾,%s 代表空白符 [ \r \n \t \v \f ] 去除首尾空格方式为 str = str:match("^[%s]*(.-)[%s]*$") 或者 str = str:match("^%s*(.-)%...原创 2019-07-18 11:08:54 · 3267 阅读 · 1 评论