如何判断数据与列表元素的类型和内容是否完全一致(Roblox Lua)
Roblox Lua:判断数据与列表元素类型和内容完全匹配的实现
要实现这个功能,核心是同时检查目标数据和列表元素的类型、值是否完全一致——Lua中不同类型的数值即使内容看起来一样(比如"1"和1),直接比较也会返回false,但显式检查类型能让逻辑更清晰,也能覆盖更多边界场景。
基础实现代码
function doesValueMatchExactly(target, list) -- 遍历列表中的每个元素 for _, element in ipairs(list) do -- 先校验类型是否一致,再校验值是否相等 if type(target) == type(element) and target == element then return true end end -- 遍历完无匹配项,返回false return false end
测试示例验证
按照你给出的场景测试:
- 字符串与数字类型不匹配
local list = {1} print(doesValueMatchExactly("1", list)) -- 输出 false
- 数字与字符串类型不匹配,同类型同值匹配
local list1 = {"1"} print(doesValueMatchExactly(1, list1)) -- 输出 false local list2 = {1} print(doesValueMatchExactly(1, list2)) -- 输出 true
扩展说明(针对Roblox复杂类型)
如果你的列表包含Roblox特有的复杂类型(比如Instance实例、Vector3向量、自定义table等):
Instance可以直接用==判断是否为同一个实例,类型检查用typeof()代替type()更准确(因为type(Instance)会返回userdata,而typeof()会返回具体的实例类型,比如Part)- 自定义table需要递归遍历键值对进行全量匹配,避免仅比较引用地址
内容的提问来源于stack exchange,提问作者Alexia
相关产品推荐
相关产品推荐

