如何设计正确的 Lua 程序?

我是一个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的方式。

请向我展示代码,或提供一些文档。非常感谢!

点赞
用户312586
用户312586

你可以避免创建临时表来传递参数,这样会使用更少的内存并且会快一点。

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}
2014-09-22 07:48:33