我有一个lua表,我用作hashmap,即使用字符串键:
local map = { foo = 1, bar = 2 }
Run Code Online (Sandbox Code Playgroud)
我想"弹出"由其键标识的该表的元素.有一种table.remove()方法,但它只需要删除元素的索引(即数字)而不是通用键.我希望能够做到table.remove(map, 'foo'),这就是我实现它的方式:
function table.removekey(table, key)
local element = table[key]
table[key] = nil
return element
end
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?
有人可以解释这种明显的疯狂吗?
> t = {1, 2, 3} -- Table length 3. Simple
> = #t
3 -- Yep
> t[3] = nil -- Remove the last element?
> = #t
2 -- Ok it realises it is the last one (since #t = 3) and decrements the length
> t[6] = 6 -- Add a separate element?
> = #t
2 -- Ok... I guess? Although surely it knew #t = 2, and so now #t should be 6?
> …Run Code Online (Sandbox Code Playgroud) 我正在尝试了解#操作员的规则。
考虑以下示例:
> t1 = table.pack(nil, 1, nil, 2)
> #t1
4
> for k, v in pairs(t1) do print(k, v) end
2 1
4 2
n 4
> t2 = table.pack(nil, 1, nil, 2, nil)
> #t2
2
> for k, v in pairs(t2) do print(k, v) end
2 1
4 2
n 5
> t3 = table.pack(nil, 1, nil, 2, nil, 3, nil)
> #t3
0
> for k, v in pairs(t3) do print(k, v) end …Run Code Online (Sandbox Code Playgroud)