gpt4 book ai didi

lua - 为什么在lua中将ipair设置为本地?

转载 作者:行者123 更新时间:2023-12-02 09:05:35 24 4
gpt4 key购买 nike

代码:

local ipairs = ipairs     -- why set this ipairs as local? 

local Access = {}

function Access.find_access_tag(source,access_tags_hierarchy)
for i,v in ipairs(access_tags_hierarchy) do
local tag = source:get_value_by_key(v)
if tag then
return tag
end
end
return nil
end

return Access

我之前没有见过将 ipair 定义为本地的。我试图从互联网上找到它,但没有找到任何有用的东西。如有任何意见,我们将不胜感激。

最佳答案

除非在模块中使用,否则这在提供的代码中没有任何区别。

在 Lua 中使用局部变量比使用全局变量更快。这就是为什么您应该尽可能使用局部变量的原因之一。

local sin = math.sin
for i = 1, 1000000 do
local x = sin(1)
end

快约 30%
for i = 1, 1000000 do
local x = math.sin(1)
end

但是作为

 for var_1, ···, var_n in explist do block end

相当于代码:

do
local f, s, var = explist
while true do
local var_1, ···, var_n = f(s, var)
if var_1 == nil then break end
var = var_1
block
end
end

explist 仅评估一次,因此将 ipairs 本地化不会带来性能提升

验证的简单示例:

local ipairs = function(t) print("ipairs called") return ipairs(t) end
for i,v in ipairs({1,2,3}) do end

只会打印一次“ipairs called”。

但是,如果您经常调用Access.find_access_tag,它可能会有所返回,因为这样您就可以通过更快地查找 ipairs 来获利。

关于lua - 为什么在lua中将ipair设置为本地?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58852683/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com