如何在Lua中更改原始变量

我想更改原始变量,以便函数打印出不同的答案。我是Lua的新手,这个可能吗,我该如何做呢?

以下是我的代码:

io.write("你的第一个玩家名字是什么?")
local name = io.read()
io.write('玩家1多少岁?')
local age = io.read()

function Recall()
    print("你的玩家名字:" ,name, "\n你的玩家年龄:" ,age, "\n")
end

Recall()

io.write("你的第二个玩家名字是什么?")
local name = io.read()
io.write('玩家2多少岁?')
local age = io.read()

Recall()

当我第二次调用函数时,它会打印出第一个输入的名字和年龄。有什么建议吗?

点赞
用户8621712
用户8621712

你创建了新的局部变量,导致无法访问名称相同的局部变量。

要解决此问题,请删除第二个 name 和第二个 age 旁边的 local(在 Player2 附近)。

作为备选方案,您可以使 Recall 函数的参数并传递参数。

例子:
local name = "Player1"
local age = 20

function Example()
    local name = "Player2"
    local age = 25

    -- 此处无法访问 'Player1' 的名称和年龄局部变量。
    print(name) -- Player2
    print(age) -- 25
end

-- 删除 'name' 和 'age' 旁边的 'local' 以重新访问本地变量。
function ExampleFixed()
    local name = "Player2"
    age = 25

    -- 这里可以访问 'Player1' 的名称局部变量。
    print(name) -- Player2
    print(age) -- 25
end

-- 使用参数并传递参数作为备选方案。
function Recall(name, age)
    print(name) -- Player1
    print(age) -- 20
end

Recall(name, age) -- Player1 20
2020-11-17 15:01:19
用户3342050
用户3342050
io.write("你好,请问你的第一个玩家叫什么名字? ")
local name1 = io.read()
io.write('玩家1岁数是多少? ')
local age1 = io.read()

function Recall( name, age )
    print("你玩家的名字是:", name, "\n你玩家的岁数是:", age, "\n")
end

Recall( name1, age1 )

io.write("请问你的第二个玩家叫什么名字? ")
local name2 = io.read()
io.write('玩家2岁数是多少? ')
local age2 = io.read()

Recall( name2, age2 )
2020-11-17 17:19:30