Fáb*_*rez 7 hash lua lua-table
我想在字符串中获得最常见的k大小的子字符串.为此,我使用表来存储每个子字符串的出现次数.这是代码:
function frequentWords(seq, k)
local subs = ""
local counter = {}
for i = 1,(seq:len()-k+1) do
subs = seq:sub(i, i+k-1)
counter[subs] = (counter[subs] and counter[subs] + 1 or 1)
--print(subs .. ": " .. counter[subs])
end
end
Run Code Online (Sandbox Code Playgroud)
该线counter[subs] = (counter[subs] and counter[subs] + 1 or 1)具有相同的平均值 counter[subs] = (counter[subs] ? counter[subs]+1 : 1).这条线只有counter[subs] = counter[subs] + 1在我们可以设置每个新counter元素时才会这样0.Lua有可能这样吗?如果不是,做类似事情的最佳方法是什么?
例如,在Ruby中,这是通过像这样声明一个Hash来完成的:
counter = Hash.new(0)
Run Code Online (Sandbox Code Playgroud)
您可以设置__indexmetamethod counter以返回0:
setmetatable(counter,{__index=function () return 0 end})
Run Code Online (Sandbox Code Playgroud)
但这更容易,更清晰:
counter[subs] = (counter[subs] or 0) + 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
813 次 |
| 最近记录: |