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

function example()
    help = "no"
end

meme = example()

print(meme.help)

这段代码会抛出运行时错误。 我不知道该怎么办。

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

点赞
用户2422013
用户2422013

将下面翻译成中文并且保留原本的 markdown 格式

你的函数中没有返回值。

如果函数没有返回任何值,那么example()就没有值,因此你会接收到nil value的错误:

enter image description here

由于代码中 return 了 help.meme,因此使用help.meme将无法起作用。 由于这是 the 唯一返回的变量,因此你可以在你的用例中简单地使用它:

下面的代码将解决这个问题:

function example()
    help = "no"
end

example()

print(help)
2014-12-06 19:27:03
用户2633423
用户2633423

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

需要注意的是,Lua 没有类,因此也没有“实例变量”。Lua 对象导向方法并不常见,不像 Java,是基于原型的对象导向方法。

创建一个具有实例变量和方法的对象的基本方法如下:

-- 这是“实例”
myobject = {}
-- 这定义了一个名为 `help` 的新“实例变量”
myobject.help = "this is the help text"

-- 这定义了实例的一个 getter 方法
-- 特殊的名称 `self` 表示实例
function myobject:GetHelp()
    return self.help
end

-- 这定义了实例的一个 setter 方法
function myobject:SetHelp( help_text )
    self.help = help_text
end

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

你可以在Lua WIKI关于对象导向编程的页面中浏览更多关于 Lua 对象导向的内容。

2014-12-06 19:52:45