听起来像是“让我为您代劳”,但不知何故我找不到答案。Lua #
运算符仅对带有整数键的条目进行计数,因此table.getn
:
tbl = {}
tbl["test"] = 47
tbl[1] = 48
print(#tbl, table.getn(tbl)) -- prints "1 1"
count = 0
for _ in pairs(tbl) do count = count + 1 end
print(count) -- prints "2"
如何不计入所有条目的数量?
@lhf:询问程序员为什么要做所有合理的编程语言都具有简单功能的事情来质疑程序员的能力是不好的。
—
Timwi'4
@Timwi:告诉Lua语言的作者之一,Lua不在“合理的”编程语言之列,这对您很不好。;-)顺便说一句,我也从来不需要这些信息。
—
亚历山大·格拉迪什
我认为我从未使用过一种语言的所有功能。这并不意味着它们对其他人无用:)
—
Roman Starkov
@sylvanaar在我看来,
—
罗曼·斯塔科夫
#
运算符的定义不明确。这很容易解决:首先#
确定性,然后引入新的运算符或函数以获取织补数。故事的结尾...为什么他们必须如此固执?:)
dictionary[value] = #dictionary + 1
,其中#
代表所有对象的数量。什么我纳闷的是,为什么你不就希望这样的:在所有理智的用例#(见kaizer.se答案),所有对象的数量正好等于什么#已返回; 似乎让#数一切都严格来说是一种改进。当然,我是Lua新手,可能会遗漏要点。