使用变量内容进行声明

时间:2014-09-11 11:44:56

标签: variables object lua declaration

我正在从类创建对象,这些对象应通过userinput获取其名称。 所以我得到了我的构造函数并称之为:

name = object:new()

结束一切都很好,当我接受对象名称为" name"。 但我希望通过名称的内容来命名对象。

所以这个:

name = "myObject"
name = object:new()
table.insert(objectlist, name)

结束于此:

objectlist = {name}

但我希望它以:

结束
objectlist = {myObject}

我该怎么做? 难道不难管理,但我没有任何线索=(

1 个答案:

答案 0 :(得分:2)

Lua中的物品没有名字;相反,变量表示引用对象的名称:

a = "asdfasf"
b = a

该字符串的名称是什么?它没有一个,但变量a引用给定的字符串对象,变量b也是如此。声明

objectlist = {myObject}

其中myObject是由new()创建的对象的用户选择名称在Lua中没有意义。您可以做的最好的事情是创建一个具有给定名称的全局变量,引用创建的对象,或将创建的对象放在一个关联表中。

例如,

name = "myObject" -- would be input by user via io.input()
obj = object:new()
objectlist[name] = obj -- allows for objectlist.myObject, if name is as above
_G[name] = obj -- this allows following line to work, if name is as above

这允许你的脚本写:

myObject:someMethod()
objectlist.myObject:someMethod()

但当然这只有在用户选择" myObject"作为name的值,所以在实践中,您可能只使用

local obj = objectlist[name]
obj:someMethod()

每当您的脚本应该使用您的用户创建的对象时。