不使用pairs遍历Lua中的表

大家好,我是Lua的新手,我想知道是否有一种方法可以获取表的键和值,而不使用pairs、ipairs、next或其他迭代器?提前感谢你们的回答。

点赞
用户1687505
用户1687505

我不认为这是可能的,因为你的问题语句表明键是未知的。检查特定值及其相应键的唯一方法是遍历整个表格。

然而,也许我误解了,你想在不遍历整个表格的情况下获取特定键的值。

假设你有一个名为morse的表格,如下所示:

morse = { a = ".-"; b = "-..."; } --等等

如果你想将单个字符转换为莫尔斯码,可以按如下方式操作:

morse["a"] --这将返回字符串“. -”

你可以做相反的事情,定义一个带有所有莫尔斯码值及其相应字母的表格,如下所示。注意使用方括号来“转义”字符。

morse = { [".-"] = "a"; ["-..."] = "b" }
morse[". -"] --这将返回“a”
2017-02-09 22:13:39
用户1190388
用户1190388

基于你的评论,我认为你是在寻找使用映射表进行字符串替换的方法。我认为你可以在这里使用string.gsub(如果你的老师仍然坚持.gsub是一个迭代器,你可以礼貌地问他们,你不知道他们声称的方法,并且会非常高兴地学习相关知识):

local str = "sos sos sos"
local morse = {s = "...", o = "---"}

print( str:gsub("%a", morse) )
2017-02-11 03:00:47