如何设计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程序更正?的主要内容,如果未能解决你的问题,请参考以下文章

lua程序设计之协同程序

Lua程序设计之————Lua面向对象2

初识lua

Lua篇《Lua程序设计》全书知识万字总结!

Lua程序设计之————Lua面向对象1

Lua程序设计