如何更改lua中的原始变量

Posted

技术标签:

【中文标题】如何更改lua中的原始变量【英文标题】:How can I change the original variable in lua 【发布时间】:2021-02-28 19:31:54 【问题描述】:

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

这是我的代码:

io.write("Hello, what is your first player's name? ")
local name = io.read()
io.write('How old is Player 1? ')
local age = io.read()

function Recall()
    print("Your player's name: " ,name, "\nYour player's age: " ,age, "\n")
end

Recall()

io.write("What is your second player's name? ")
local name = io.read()
io.write('How old is Player 2? ')
local age = io.read()

Recall()

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

【问题讨论】:

【参考方案1】:

您创建了新的本地人并失去了对同名本地人的访问权限。

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

作为替代解决方案,您可以为 Recall 函数设置参数并在其中传递参数。

【讨论】:

【参考方案2】:

正确的想法,只需稍微调整一下,就不会使用相同的变量

io.write("Hello, what is your first player's name? ")
local name1 = io.read()
io.write('How old is Player 1? ')
local age1 = io.read()

function Recall( name, age )
    print("Your player's name: ", name, "\nYour player's age: ", age, "\n")
end

Recall( name1, age1 )

io.write("What is your second player's name? ")
local name2 = io.read()
io.write('How old is Player 2? ')
local age2 = io.read()

Recall( name2, age2 )

【讨论】:

哦,谢谢,我试过这样做,但我不明白你如何使用括号内的东西。 这些变量充当局部范围,特定于该函数,在它之外的任何地方都不存在。如果你愿意,你可以重用变量名,如果这正是你想要的,但有时这会混淆值,尤其是在开始时,所以当你尝试学习时,最好为新项目使用唯一的名称。

以上是关于如何更改lua中的原始变量的主要内容,如果未能解决你的问题,请参考以下文章

在更改 ruby​​ 中的某些值后,如何维护具有原始值的哈希副本?

在 Lua 类中使用表变量

如何在不更改原始数组的情况下更改函数中的数组? [复制]

如何创建不更改原始值的模板过滤器

如何在不更改原始列表的情况下更改新列表?

如果在 LUA 中更改了对象的属性,如何使函数执行?