如何停止列表中的 nil 值被计数

我有一个函数,在真实情况下返回 "Match",否则返回 nil。我需要知道列表中有多少个值是 "Match"(因此在我的函数中使用 nil 作为另一个值)。

someList = {"gdj", nil, "jdis"}

print(#someList) --> 3

我的最初问题在 这里,如果有什么我应该返回而不是 nil,请告诉我!

点赞
用户752976
用户752976

# 运算符的定义比较奇怪,它会计算直到 其中一个 存在非 nil 值的元素。在你的情况下,它完全可能返回 1。这是因为 Lua 实际上不支持在表中存储 nil 值

因此,除非你知道表的大小并能够停止迭代,否则没有明确的方法可以迭代这样的表。

最好的方法是存储一个专门的“假值”,然后使用 ipairs 手动迭代和计数。

2019-07-05 11:24:33