在 lua 中,我想要一个 table 的方法来全局更改其值,但它只在本地执行

In lua, I want a table`s method to change its value globally, but it only does locally

发生的情况是:我需要 self.key 随着按键在 true 和 false 之间切换。

显然,这发生在本地级别(如果我取消注释 "if" 子句,则打印会在按键时发生),而我需要的是它实际更改键对象的值.

keys = {}
keys.escape = false
keys.space  = false

function keys:pressed()
    for key in pairs(self) do
        self.key = love.keyboard.isDown(key)
        --if self.key then print(key) end
    end
end

function love.update()
    keys:pressed()
end

有什么解决办法吗?

您的问题与此无关,这是因为您正在设置 'key' 索引。不是单个键的索引...如果这有意义的话。

基本上当你设置self.key时,key是一个字符串。不是循环变量。为了设置它,您需要用方括号对其进行索引。

我的意思是:

keys = {}
keys.escape = false
keys.space  = false

function keys.pressed(self)
    for key in pairs(self) do
        self[key] = love.keyboard.isDown(key)
        --if self.key then print(key) end
    end
end

function love.update()
    keys:pressed()
end

这样我们使用 变量 key 而不是字符串 'key'