【发布时间】:2021-11-07 07:49:55
【问题描述】:
function test1(x) local x=x return x end
function test2(x) return x end
假设我将它们称为 test(5)。这里的返回值在幕后有什么区别?代码块中 x 的任何使用都遵循本地规则,我得到了那么多。但是当我返回 x 时会发生什么?主要是这两个函数的返回值不同还是一样?是任何一个函数,在运行时,比另一个函数更有效地处理等等。
我的理解是返回值是将 x 作为本地值吐出到它被调用的任何地方。
function test3()
test1(5) --local 5
a=test1(5) --global a=5
end
那么用 test2(5) 代替 test1(5) 有什么不同吗? test1 是否将 x 变成本地然后返回它,而 test1 只是抓住我在本地制作的本地 x 并返回它?这里有什么小细节吗?
我的兴趣主要是使用本地作为一种优化形式。就像优化碰撞公式一样:在返回对它们进行的任何数学运算之前,我是否应该将每个参数定义为本地参数。
function mult(x,y)
local x=x
local y=y
return x*y
end
function mult2(x,y) return x*y end
【问题讨论】:
-
您的
x在这两个函数中都是本地的,在test1中,您只是将参数x与本地x遮蔽,在您已经证明没有必要的情况下,我的一本书建议您阅读,示例将显示local的重要性,Lua Gems 它包含的一些优化遵循您的提问,相关位将是第 2 章示例的第三页lua.org/gems/sample.pdf -
您能否详细说明一个需要的情况...?据我所知,参数以及分配的参数总是在函数中定义为本地的?所以我只会在函数中分配新变量时使用本地? function mult2(x,y) local x=x+33 return xy end......这被认为是不同的吗? function mult2(x,y) local p=x+33 return py end 是你在暗示的吗?我的 OP 是从字面上创建的,因为我阅读了该文档,其中概述了当地人对优化的重要性。
-
stackoverflow.com/questions/24729599/... 如果没有将其声明为本地,它会明确表示它是全局的。参数没有声明为本地的,所以它们是全局的?或者这是一个特殊情况,像函数 (x) local x=x 的示例这样的设置参数不需要定义为本地?类似于 i=1,10 的方式... i 自动是本地的。或者参数只是占位符,所以它们要么是本地的,要么只是类似于占位符的东西,但是当变量赋值发生时......上面的讨论起作用了。
-
“如果它没有被声明为本地它的全局,它会明确表示。”这并不完全正确。
for语句中的参数和变量是隐式本地的。
标签: lua return return-type