我有下表:
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)
在此先感谢您的帮助!
我想遍历表并将每个值设置为false,但我必须错过Lua的一些细微差别.我没试过就试过以下内容:
Run Code Online (Sandbox Code Playgroud)for k,v in ipairs(self.keytable) do v = false end
是否更容易理解为什么这不起作用?
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)
归档时间: |
|
查看次数: |
192 次 |
最近记录: |