6

Lua のスコープをテストしていて、予期しないことに気付きました。次のコードは、localMainVariable を出力しません。

function functionScope()
    print( "\nIn function")
    print( "globalMainVariable: " .. globalMainVariable )
    if (localMainVariable ~= nil) then print( "localMainVariable: " .. localMainVariable ) end
end

globalMainVariable = "Visible"
local localMainVariable = "Visible"
functionScope()

ただし、次のコードは localMainVariable を出力します。

globalMainVariable = "Visible"
local localMainVariable = "Visible"

function functionScope()
    print( "\nIn function")
    print( "globalMainVariable: " .. globalMainVariable )
    if (localMainVariable ~= nil) then print( "localMainVariable: " .. localMainVariable )  end
end

functionScope()

localMainVariable が宣言された場所と関係があることは知っていますが、ローカルにすると変数のスコープが制限されると思いました。実際のルールは?

ありがとう

4

1 に答える 1

5

ローカル変数のスコープは、宣言後の最初のステートメントから始まり、宣言を含む最も内側のブロックの最後の非 void ステートメントまで続きます。

Lua マニュアル

于 2013-03-23T17:43:50.053 に答える