Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Lua中不使用对导航表_Lua_Lua Table - Fatal编程技术网

在Lua中不使用对导航表

在Lua中不使用对导航表,lua,lua-table,Lua,Lua Table,您好,我是Lua的新手,我只是想知道是否有办法不使用pairs、ipairs、next或其他迭代器获取表的键和值?提前谢谢 我认为这是不可能的,因为你的问题措辞暗示了关键是未知的。检查某个值及其对应键的唯一方法是遍历整个表 但是,可能我误解了,您希望从一个键中获得某个值,而不需要遍历整个表 假设您有一个名为morse的表,如下所示: morse = { a = ".-"; b = "-..."; } -- And so on morse["a"] --Which will return the

您好,我是Lua的新手,我只是想知道是否有办法不使用pairs、ipairs、next或其他迭代器获取表的键和值?提前谢谢

我认为这是不可能的,因为你的问题措辞暗示了关键是未知的。检查某个值及其对应键的唯一方法是遍历整个表

但是,可能我误解了,您希望从一个键中获得某个值,而不需要遍历整个表

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

morse = { a = ".-"; b = "-..."; } -- And so on
morse["a"] --Which will return the string ".-"
如果要将单个字符转换为莫尔斯,可以执行以下操作:

morse = { a = ".-"; b = "-..."; } -- And so on
morse["a"] --Which will return the string ".-"
您可以做相反的事情,定义一个包含所有莫尔斯值及其对应字母的表,如下所示。注意使用方括号“转义”字符

morse = { [".-"] = "a"; ["-..."] = "b" }
morse[".-"] -- This will return "a"
基于,我认为您正在寻找使用映射表的字符串替换。我认为你可以使用(如果你的老师仍然坚持认为
.gsub
是迭代器;你可以礼貌地问他们,你不知道他们声称的方法,并且很高兴实际了解相同的方法):


实际上,这是我的任务,创造一个莫尔斯电码。使用配对,这很容易做到。但是我们的老师说,如果我们尝试不使用配对或迭代器,他会给我们更好的分数。我一整天都在寻找一种不使用迭代器的方法,但我仍然没有找到一种方法……遍历表的基本函数是
next
。如果没有它,或者是成对的(使用下一个
next
),就没有其他方法了。是的,这就是为什么我很困惑如何在不使用lua构建的函数的情况下遍历表。。。感谢您的回复如果您构建了表,并且没有键等于一个值,您可以说
t[k],t[v]=v,k
(即添加双向条目)。然后,如果你可以从外部枚举其中一个(例如字母a、b、c…),你也可以枚举另一个(这里是摩尔斯电码),因为如果你有键序列
k1、k2,…
你可以通过
t[k1],t[k2],…
获得
v1、v2,
,因为你可以双向查找,你可以从
t[v]返回
k
。我疯了吗?昨天我在这篇文章上评论了两次“这毫无意义”和“这是一个数组?还是一个字典?”但现在它们不见了……对不起。我忘了说我必须创建一个摩尔斯电码,可以将英语转换成摩尔斯电码或摩尔斯电码转换成英语。谢谢你的回答,先生,我尝试过使用配对的方法,我可以得到键和值,这就是为什么我一直在想,我怎么才能得到像‘morse={[“-”]=“a”}’这样的键,morse=[“a”]会返回“a”而不是“