Tim*_*mmm 6 lua local-variables require
这有什么区别
local audio = require "audio"
Run Code Online (Sandbox Code Playgroud)
和
require "audio"
Run Code Online (Sandbox Code Playgroud)
前者有什么优势吗?
在Lua中,模块是导出多个公共函数的对象.在Lua中有两种定义模块的方法.例如:
module(..., package.seeall)
Audio = {}
function Audio:play()
print("play")
end
Run Code Online (Sandbox Code Playgroud)
或者:
Audio = {}
function Audio:play()
print("play")
end
return Audio
Run Code Online (Sandbox Code Playgroud)
前者是定义模块的旧方法,但在许多示例中仍然可以找到它.后者是现在定义模块的首选方式.
因此,除非您将模块分配给局部变量,否则无法引用其导出的变量和方法.
如果audio已定义任何全局函数,audio则导入后将可以使用这些函数.全局函数和变量附加到全局对象.在Lua中有一个名为_G的变量,它包含定义的所有全局变量和函数.例如,
audio.lua
function play()
print("play")
end
Run Code Online (Sandbox Code Playgroud)
main.lua
require("audio")
play()
Run Code Online (Sandbox Code Playgroud)
要么
require("audio")
_G.play()
Run Code Online (Sandbox Code Playgroud)
这是有效的,但将所有内容放在全局对象中有几个不便之处.变量和函数可能会被覆盖.最终,全局对象变得臃肿.最好在模块中构造所有内容,因此变量和方法都封装在它们自己的命名空间中.
| 归档时间: |
|
| 查看次数: |
1938 次 |
| 最近记录: |