Lua 函数不';不要改变变量的值

Lua 函数不';不要改变变量的值,lua,Lua,我试着用\u G声明变量,并在函数的末尾,即最后一个“end”之前,放一个return语句。第一个给了我一个错误,另一个没有解决任何问题 X = 0 Y = 0 Z = 0 BedrockLevel = 0 CurrentLayer = 5 succsess = true function DigDown(BedrockLevel, CurrentLayer, Z, succsess) while BedrockLevel == 0 do succsess = tur

我试着用
\u G
声明变量,并在函数的末尾,即最后一个“end”之前,放一个return语句。第一个给了我一个错误,另一个没有解决任何问题

X = 0
Y = 0
Z = 0
BedrockLevel = 0
CurrentLayer = 5
succsess = true


function DigDown(BedrockLevel, CurrentLayer, Z, succsess)
    while BedrockLevel == 0 do
        succsess = turtle.digDown()
        if succsess == false then
            succsess = turtle.down()
            if succsess == false then
                BedrockLevel = Z - 1
            else
                Z = Z - 1
            end
        end
        succsess = turtle.down()
        if succsess == true then
            Z = Z - 1
        end
    end
    while Z < BedrockLevel + CurrentLayer do
        succsess = turtle.up()
        if succsess == true then
            Z = Z + 1
        end
    end
    return BedrockLevel, CurrentLayer, Z, succsess
end


DigDown(BedrockLevel, CurrentLayer, Z, succsess)
print(BedrockLevel, X, Y, Z)
X=0
Y=0
Z=0
基岩水位=0
CurrentLayer=5
成功=正确
功能下挖(基岩标高、CurrentLayer、Z、Successs)
而BedrockLevel==0 do
successs=turtle.digDown()
如果successs==false,则
successs=海龟。向下()
如果successs==false,则
基岩标高=Z-1
其他的
Z=Z-1
结束
结束
successs=海龟。向下()
如果successs==true,则
Z=Z-1
结束
结束
而Z
预期结果是:打印功能显示:-10 0 5

但是上面写着0


由于这是在代码顶部指定的值,因此我假设函数不会更改它,即使有返回语句。

您的问题与如何将值传递给函数有关,然后如何返回这些值

当您将一个值传递给函数并将其命名为与其他全局变量相同的名称时,您就得到了。这意味着从函数内部几乎无法访问它

有关阴影的资源:

至于您的返回,您返回值,但不将这些值分配给任何变量。您的呼叫应如下所示:

BedrockLevel, CurrentLayer, Z, succsess = DigDown(BedrockLevel, CurrentLayer, Z, succsess)
function DigDown()
或者,您也可以这样定义
diggdown

BedrockLevel, CurrentLayer, Z, succsess = DigDown(BedrockLevel, CurrentLayer, Z, succsess)
function DigDown()

这不会影响全局变量,因此对
BedrockLevel、CurrentLayer、Z、Successs所做的任何更改都将反映在全局变量中。

ah,tanks很多:)我想我需要在函数中插入所需变量的名称,以便它知道它们来自何处。但如果留白就解决了问题,这可能是有史以来解决任何问题的最简单方法:D@NicoLindenlauf我想指出,全局变量并不总是最好的方法。我认为这个答案以及其他关于这个问题的答案很好地解释了这些问题: