Lua - 列表搜索



当我们想要迭代一个项目以查找特定值时,我们通常使用 for 循环。这始终是最直观的方法,也是推荐的方法。

让我们来看一个例子,其中我们在 Lua 中存储了一个水果列表,然后我们想要检查特定水果是否存在于其中。为此,最原生且高效的方法是迭代列表元素并将其中的每个元素与我们正在查找的元素进行比较。这种技术或方法也称为线性搜索。

示例

考虑以下示例:

main.lua

local fruits = { "apple", "orange", "pear", "banana" }
for _, fruit in pairs(fruits) 
do
   if fruit == "pear" then
   do 
	  print("We Found it!")
      break
   end
      else print("Oh no, keep traversing!")
   end
end

输出

Oh no, keep traversing!
Oh no, keep traversing!
We Found it!

虽然上述方法运行良好,但建议使用集合而不是遍历列表。

示例

以下示例使用我们可以使用的**集合**方法,它运行良好。考虑以下示例:

main.lua

function Set (list)
   local set = {}
   for _, l in ipairs(list)
   do
      set[l] = true
   end
   return set
end

local fruits = Set { "apple", "orange", "pear", "banana" }

   if fruits["pear"] then
   do
      print("Present in the set")
   end
end

输出

Present in the set
广告