如何遍历此表?

Mag*_*ked 0 lua

我有下表:

self.keytable = {}
self.keytable.rotate_right = false
self.keytable.rotate_left = false
self.keytable.thrust = false
self.keytable.brake = false
self.keytable.fire = false
Run Code Online (Sandbox Code Playgroud)

我想遍历表并将每个值设置为false,但我必须错过Lua的一些细微差别.我没试过就试过以下内容:

for k,v in ipairs(self.keytable) do
    v = false
end
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助!

Mud*_*Mud 5

我想遍历表并将每个值设置为false,但我必须错过Lua的一些细微差别.我没试过就试过以下内容:

for k,v in ipairs(self.keytable) do  
    v = false  
end  
Run Code Online (Sandbox Code Playgroud)

是否更容易理解为什么这不起作用?

local v = self.keytable[rotate_right]
v = false
Run Code Online (Sandbox Code Playgroud)

您复制的价值self.keytable[rotate_right]v.随后写入不同的值v不会影响值keytable.

这正是for循环中发生的事情,它等同于:

for k=1,#self.keytable do
    local v = self.keytable[k]
    v = false
end
Run Code Online (Sandbox Code Playgroud)

如果要更新值,则keytable需要编写:

for k=1,#self.keytable do
    self.keytable[k] = false
end
Run Code Online (Sandbox Code Playgroud)

或者,如果您正在使用ipairs(如在原始循环中):

for k,v in ipairs(self.keytable) do
    self.keytable[k] = false
end
Run Code Online (Sandbox Code Playgroud)