TCAX 字幕特效制作工具官方论坛 | ASS | TCAS | Python | Aegisub | Lua
标题:
浅谈两种常见的lua表代码结构写法的优缺点
[打印本页]
作者:
Seekladoom
时间:
2022-8-19 02:57:35
标题:
浅谈两种常见的lua表代码结构写法的优缺点
本帖最后由 Seekladoom 于 2022-8-19 03:01 编辑
第1种写法(实际案例:Yutils.lua)
local test
test = {
math = {
distance = function(x, y, z)
if type(x) ~= "number" or type(y) ~= "number" or z ~= nil and type(z) ~= "number" then
error("one vector (2 or 3 numbers) expected", 2)
end
return z and math.sqrt(x*x + y*y + z*z) or math.sqrt(x*x + y*y)
end
},
}
return test
复制代码
优点:
开发者进行长期开发维护时,以上述写法编写出来的lua代码在各种IDE中(VSCode、Sublime、Notepad++等)进行折叠代码操作时,熟悉快捷键的人可以迅速折叠当前不需要分析的代码,仅展开当前需要的部分进行分析,分析完之后在界面中上下翻动时,所需要的时间也更短。
如下图给出了在VSCode中折叠的例子:
2022-8-19 02:54:00 上传
下载附件
(166.6 KB)
缺点:
不知道
折叠代码
这个
操作
的人很难理解为什么要像上面这样写,
代码长了的情况下
就不好
确
定当前的代码内容隶属于哪个
上级表
了。
鄙人也是因为
这点,
给各个子表
打了几百行各部分
代
码对应的
上
级
表
的注释。(然而知道折叠之后才发现这么做其实没必要)
2022-8-19 02:55:17 上传
下载附件
(109.69 KB)
第2种写法(实际案例:Effector-utils-lib-3.5.lua)
local test = {math = {}}
function test.math.distance(x, y, z)
if type(x) ~= "number" or type(y) ~= "number" or z ~= nil and type(z) ~= "number" then
error("one vector (2 or 3 numbers) expected", 2)
end
return z and math.sqrt(x*x + y*y + z*z) or math.sqrt(x*x + y*y)
end
return test
复制代码
优点:
对初学者而言,可以尽可
能控制表代码深度,有助于快速上手。
2022-8-19 02:56:01 上传
下载附件
(109.86 KB)
缺点:
如果进行长期开发,写出那种上万行的
脚本以后,在脚本内
要进行上下文本
代
码分析,特别是
折
叠代码的时候,就比较折磨了。这种写法
做不到
像
第1种写法那样
高效折叠
成千上万行代码。
2022-8-19 02:56:24 上传
下载附件
(257.18 KB)
图片附件:
F2-2.png
(2022-8-19 02:56:24, 257.18 KB) / 下载次数 775
http://tcax.org/forum.php?mod=attachment&aid=MzAyNnxiMWJhODRhOHwxNzMyMjI2MzM1fDB8MA%3D%3D
图片附件:
F2.png
(2022-8-19 02:56:01, 109.86 KB) / 下载次数 813
http://tcax.org/forum.php?mod=attachment&aid=MzAyNXw2MWRhZmI4MXwxNzMyMjI2MzM1fDB8MA%3D%3D
图片附件:
F1-2.png
(2022-8-19 02:55:17, 109.69 KB) / 下载次数 778
http://tcax.org/forum.php?mod=attachment&aid=MzAyNHxmMjRhZWEyY3wxNzMyMjI2MzM1fDB8MA%3D%3D
图片附件:
F1.png
(2022-8-19 02:54:00, 166.6 KB) / 下载次数 813
http://tcax.org/forum.php?mod=attachment&aid=MzAyM3w5ZjFlYWQwMHwxNzMyMjI2MzM1fDB8MA%3D%3D
欢迎光临 TCAX 字幕特效制作工具官方论坛 | ASS | TCAS | Python | Aegisub | Lua (http://tcax.org/)
Powered by Discuz! X2