51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Lua笔记

找到分数lua时出错。

找到分数lua时出错。

厉飞雨 阅读(28) 评论(0) 赞(0)

英文: an error while trying to find fraction lua 问题 {#heading} ============= 以下是代码的翻译部分: local function FindFraction(float) local i, f = math.modf(float) local result...

Beware of Hash Collisions in Lua Tables

Beware of Hash Collisions in Lua Tables

厉飞雨 阅读(34) 评论(0) 赞(1)

We all know that a Lua table is a hash table, which uses a hash function to map a key into one of the table's slots. However, the result of the hash function is not unique. There exist s...

自动生成 Lua 热更新代码

自动生成 Lua 热更新代码

厉飞雨 阅读(29) 评论(0) 赞(0)

游戏服务器使用 Lua 的一个重要原因是 Lua 便于热更. 即使服务器正在运行, 只需让它执行一段代码, 即可重写其中的某些函数, 达到热更新的目的. 例如模块 `app` 有一个函数 `foo` |-----------------------|----------------------------------------------------------------...

Printing parameters in Lua traceback

Printing parameters in Lua traceback

厉飞雨 阅读(43) 评论(0) 赞(1)

When an error occurs, Lua will print a traceback of the call stack, it helps us to find bugs. In many cases, however, a call stack traceback is not enough for us to find out the problem. We ...

Lua 夏令时时区问题

Lua 夏令时时区问题

厉飞雨 阅读(40) 评论(0) 赞(1)

我之前的[一篇文章](/2020/05/08/sync-time-zone.html)介绍了怎样在服务器和客户端之间同步时间和时区. 同步时间相对简单些, 本质就是一个时间差; 而时区相对复杂些. 那篇文章介绍的方法有一个问题: 在客户端的时区启用了夏令时的时候, 客户端得到的本地时间会比实际快一个小时. 原因是求客户端时区的方法不对. 例如, 太平洋时区本为 UTC-0800...

Lua next 函数的一个有趣问题

Lua next 函数的一个有趣问题

厉飞雨 阅读(32) 评论(0) 赞(1)

熟悉 Lua 的同学都知道, Lua 是允许在 `for ... pairs` 循环中修改和删除表中元素的. 下面这样的代码是没有任何问题的: |---------------------|----------------------------------------------------------------------------------------------...

为什么说 Lua 5.3 中没有全局变量了

为什么说 Lua 5.3 中没有全局变量了

厉飞雨 阅读(28) 评论(0) 赞(1)

过去笔者一直使用 Lua 5.1, 对 Lua 5.3 中的 `_ENV` 一知半解. 最近新项目中使用了 Lua 5.3, 于是特意研究了下. 这篇文章总结下 Lua 5.3 中的环境和全局变量, `_ENV` 的含义以及与之相关的用法. ### Lua 变量的类型 {#lua-变量的类型} Lua 中的变量可分为局部变量, 上值(upvalue)和全局变量. 经常使用 ...

序列化 Lua 对象

序列化 Lua 对象

厉飞雨 阅读(34) 评论(0) 赞(1)

在项目中由于种种需求经常需要将对象序列化成一个字符串. 由于 Lua 唯一的复合结构是 table, 所以实现起来还是比较简单的. 之前我们的做法是用 Lua 写一个递归函数遍历 table 的键值然后转换成字符串并拼接起来. 然而 Lua 在字符串拼接的过程中会不断地构造字符串对象, 因此这样的实现方式性能较差, 并且会浪费内存, 特别是数据比较大的时候. 一种优化方式是将键...

在Lua中使用装饰器

在Lua中使用装饰器

厉飞雨 阅读(35) 评论(0) 赞(1)

引言 {#引言} -------- 使用过 Python 的同学都会喜欢上 Python 的装饰器. 它提供一种语法, 对函数进行"声明": |---------------------------|------------------------------------------------------------------------------...