如何设计lua程序更正?
Posted
技术标签:
【中文标题】如何设计lua程序更正?【英文标题】:how to design lua program corrected? 【发布时间】:2014-11-16 00:01:48 【问题描述】:我是 lua 新手,有个问题困扰了我好几天。
例如,在c语言中,我有一个结构如下:
struct userinfo
int id,
char *name,
int age
如果我想定义不同的用户信息,我可以这样做:
struct userinfo user1;
struct userinfo user2;
但是在lua中,我不知道如何正确实现这个功能。我想我可以这样做:
local userinfo =
function userinfo.new(param)
local self = id = param.id, name = param.name, age = param.age
return self
end
return userinfo
local info = require "userinfo"
local user1 = info.new(id = 1, name = "xxx", age = 20)
local user2 = info.new(id = 2, name = "yyy", age = 20)
这看起来满足了我的需求,但感觉很奇怪。
我想知道如何使用 lua 自己的方式来设计程序,而不是 c 的。
请给我看代码,或者提供一些文件。非常感谢!
【问题讨论】:
这感觉就像是完全地道的 Lua 代码。好工作!为什么你觉得这很奇怪? 对于纯数据字段(即表中没有函数),不需要像您的示例中那样使用“新”函数。只需正常声明表即可。此外,您正在分配临时表并免费复制它们。 【参考方案1】:您可以避免创建临时表来传递参数。这将使用更少的内存并且速度更快。
local userinfo =
function userinfo.new(id, name, age)
return id = id, name = name, age = age
end
return userinfo
---
local info = require "userinfo"
local user1 = info.new(1, "xxx", 20)
local user2 = info.new(2, "yyy", 20)
但是请注意,在 Lua 中完全可以只使用原始表。以下是完全可以接受的(也是最快的解决方案):
local user1 = id = 1, name = "xxx", age = 20
local user2 = id = 2, name = "yyy", age = 20
【讨论】:
非常感谢。但我也有一个问题。如果在大型项目中,许多不同的模块将使用 userinfo。不同的人如何知道 userinfo 包含哪些字段?在c语言中,他们可以读取struct userinfo,但是在lua中,我能做什么?也许我们可以查看文档或 cmets。 您可以使用我们的源代码 cmets。例如,我有时会在面向用户的函数的开头添加检查,这些函数执行checkInteger(id); checkString(name); checkNumber(age)
等操作。这样人们就可以阅读“好的,id 需要是整数”。我只在我的库的“向外”入口点上这样做,而不是在所有函数中。以上是关于如何设计lua程序更正?的主要内容,如果未能解决你的问题,请参考以下文章