收藏本站
繁體浏览
切换到宽版
请
登录
后使用快捷导航
没有帐号?
新人加入
帐号
自动登录
找回密码
密码
登录
新人加入
快捷导航
TCAX
程序
特效
手册
TCAX 用户手册 (关键帖子汇总)
其他
历史
招募
入门
提问
报道
介绍
下载
教程
FAQ
作品展示
内置特效
特效代码
在线预览
博客
源代碼
RH字幕组
搜索
搜索
热搜:
TCAX
教程
TCAS
ASS
特效
本版
帖子
用户
TCAX 字幕特效制作工具官方论坛 | ASS | TCAS | Python | Aegisub | Lua
›
TCAX
›
ASS特效研习社
›
技术交流
›
浅谈两种常见的lua表代码结构写法的优缺点 ...
返回列表
查看:
2379
|
回复:
0
浅谈两种常见的lua表代码结构写法的优缺点
[复制链接]
Seekladoom
Seekladoom
当前离线
UID
2546
积分
159
帖子
30
主题
5
论坛币
868
威望
0
EP值
134
MP值
0
阅读权限
50
注册时间
2015-5-9
在线时间
52 小时
最后登录
2024-10-20
正式会员
电梯直达
楼主
发表于 2022-8-19 02:57:35
|
只看该作者
|
正序浏览
本帖最后由 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)
收藏
0
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
新人加入
发表回复
GitHub
|
TCAX 主页
GMT+8, 2024-11-22 06:09
Powered by
Discuz!
X2
© 2001-2011
Comsenz Inc.
积分 0, 距离下一级还需 积分
回顶部
RealH