如何在lua中引用实例变量?

时间:2014-12-06 19:20:34

标签: lua

function example()
    help = "no"
end

meme = example()

print(meme.help)

此代码抛出运行时错误。 我不知道该怎么做。

我试图自学lua,我知道这可以在java中完成,但我无法在lua中使用它。

2 个答案:

答案 0 :(得分:1)

你没有回归你的职能。

如果函数没有返回任何example()没有值,那么您将收到nil value错误:

enter image description here

使用return作为 help.meme ed 的代码,使用function example() help = "no" end example() print(help) 将无效。由于它只返回 变量,您只需在用例中使用它:

以下代码将解决此问题:

{{1}}

答案 1 :(得分:0)

目前还不是很清楚你想要实现什么,但从你的问题来看,似乎你想要模仿Java的面向对象特性。

请记住,Lua没有“实例变量”,因为它没有类。 Lua面向对象的方法并不常见,与Java不同,它是一种基于原型的面向对象。

使用实例变量和方法创建对象的一个​​非常基本的方法如下:

-- this is the "instance"
myobject = {}
-- this defines a new "instance variable" named `help`
myobject.help = "this is the help text"

-- this defines a getter method for the instance
-- the special name `self` indicates the instance
function myobject:GetHelp()
    return self.help
end

-- this defines a setter method for the instance
function myobject:SetHelp( help_text )
    self.help = help_text
end

print( myobject:GetHelp() )
myobject:SetHelp( "new help text" )
print( myobject:GetHelp() )

您可以在浏览链接的Lua中发现有关面向对象的更多信息 Lua WIKI's page about object oriented programming