Lua - 命名空间



命名空间是一个声明区域,它为其中的标识符(类型、函数、变量等的名称)提供作用域。

简单来说,命名空间是一类元素,其中每个元素都具有该类特有的名称。它用于将代码组织成逻辑组,并防止特别是在代码库包含多个库时可能发生的名称冲突。

在 Lua 中,并不存在命名空间。尽管 Lua 不支持命名空间,官方文档中提到,“有时将代码组织成带有命名空间的包和模块以避免名称冲突并组织代码是很好的”。

由于 Lua 没有官方的命名空间,我们必须自己创建一个,方法是使用表。

在下面显示的代码中,我们创建了一个包含两个不同函数的命名空间,我们可以使用它们而不会出现编程问题。

示例

考虑下面显示的示例:

main.lua

Distance = Distance or {} -- Allow addition to namespace
function Distance.onedim(start, stop)
   return (start > stop) and start - stop or stop - start
end
function Distance.twodim(start, stop)
   local xdiff = start[1] - stop[1]
   local ydiff = start[2] - stop[2]
   local summer = xdiff * xdiff + ydiff * ydiff
   return math.sqrt(summer)
end
print(Distance.onedim(5,10))
print(Distance.twodim({5,10},{10,20}))

输出

5
11.180339887499
广告