为什么在Lua中使用本地需求?

时间:2016-04-24 09:31:05

标签: lua require local-variables

这个

有什么区别
local audio = require "audio"

require "audio"

前者是否有任何优势?

1 个答案:

答案 0 :(得分:5)

在Lua中,模块是一个导出多个公共函数的对象。在Lua中有两种定义模块的方法。例如:

Audio = {}

function Audio:play()
   print("play")
end

return Audio

或者:

audio

前者是定义模块的旧方法,但在许多例子中仍然可以找到它。后者是现在定义模块的首选方式。

因此,除非您将模块分配给局部变量,否则无法引用其导出的变量和方法。

如果audio已定义任何全局函数,则导入function play() print("play") end 后将可以使用这些函数。全局函数和变量附加到全局对象。在Lua中有一个名为_G的变量,它包含定义的所有全局变量和函数。例如,

<强> audio.lua

require("audio")

play()

<强> main.lua

require("audio")

_G.play()

或者

y<-c(3,5,6,10,12,1) 
y[y%in%1:5]<-0 

这样可行,但将所有内容放在全局对象中有几个不便之处。变量和函数可能会被覆盖。最终,全局对象变得臃肿。最好在模块中构造所有内容,因此变量和方法都封装在它们自己的命名空间中。