我需要检查特定字符串是否是一组预定字符串中的一个。

我想到了两种方法:设置表以对特定值返回true

local isParticular = {
    [string1] = true,
    [string2] = true
}

print(isParticular[string1]) -- true
print(isParticular[randomString]) -- nil -> false


或设置功能以有条件的确定对其进行检查

function isParticular(s)
    return s == string1 or s == string2
end

print(isParticular(string1)) -- true
print(isParticular(randomString)) -- false


据我了解,table方法对于任何特定的字符串和不同的字符串都将花费相同的时间,而由于短路评估而导致的函数调用将花费更少的时间用于string1和花费更多的时间用于string2randomString

同样,函数调用和表访问都会导致一些开销,但短路评估可能会有所作为(我认为速度较慢,特别是考虑到我有两个以上的特定字符串,并且大多数字符串不匹配任何一个)。

那我应该用什么方法呢?

最佳答案

哈希表查找的性能将优于大型数据集的功能查找。因此,采用第一种方法:

local isParticular = {
    string1 = true,
    string2 = true
}

print(isParticular[string1]) -- true
print(isParticular[randomString]) -- nil -> false

10-08 00:40