检查数组是否包含特定值。
2015-11-4 6:30:27
收藏:0
阅读:238
评论:3
我有一个数组,其中包含一些值(int),我想检查用户提供的值是否等于该字符串中的某个值。如果是,则输出类似于“获得了您的字符串”的消息。
列表示例:
local op = {
{19},
{18},
{17}
}
if 13 ==(该数组的值)then
消息
else
其他消息
如何做到这一点?
点赞
用户2505965
Lua不像其他语言一样有严格的数组–它只有哈希表。当Lua的表索引为数字并密集地排列时,该表被视为“类数组”表,没有任何空隙。以下表格的索引将为1, 2, 3, 4。
local t = {'a', 'b', 'c', 'd'}
当你有一个类数组表时,你可以通过循环遍历表来检查它是否包含某个值。可以使用for..in循环和ipairs函数创建一个通用函数。
local function has_value (tab, val)
for index, value in ipairs(tab) do
if value == val then
return true
end
end
return false
end
我们可以在if条件中使用上述代码来获取我们的结果。
if has_value(arr, 'b') then
print 'Yep'
else
print 'Nope'
end
再次强调我的上述评论,您目前的示例代码不是数字的类数组表。相反,它是一个包含类数组表的类数组表,其中每个数组的第一个索引都是数字。您需要修改上述函数以使用您显示的代码,使其不那么通用。
local function has_value (tab, val)
for index, value in ipairs(tab) do
-- 我们取出子表的第一个索引
if value[1] == val then
return true
end
end
return false
end
Lua不是很大或复杂的语言,其语法非常清晰。如果上述概念对您来说完全陌生,那么您需要花费一些时间阅读真正的文献,而不仅仅是复制示例。我建议阅读Programming in Lua以确保您了解非常基本的知识。这是针对Lua 5.1的第一版。
2015-11-03 23:37:12
用户5342251
你还可以通过将值移动到索引上并将它们赋值为 true,使数组中值的存在性检查更加高效。
然后当你检查你的表时,只需检查该索引上是否存在一个值,这将节省一些时间,因为在最坏情况下你不需要浏览整个表...
以下是我想到的一个例子:
local op = {
[19]=true,
[18]=true,
[17]=true
}
if op[19] then
print("message")
else
print("other message")
end
2015-11-09 10:04:05
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
你问题中的表
op实际上是一个数组(表)嵌套数组。检查一个值是否存在于一个表中:
local function contains(table, val) for i=1,#table do if table[i] == val then return true end end return false end local table = {1, 2, 3} if contains(table, 3) then print("值找到了") end