Звучит как вопрос "позволь мне погуглить для тебя", но почему-то я не могу найти ответа. Оператор 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"
Как получить количество всех записей, не считая их?
#
оператор просто некорректно определен. Это так легко исправить: во-первых, сделайте #
детерминированным, а во-вторых, введите новый оператор или функцию, чтобы получить счет. Конец истории ... Почему они должны быть такими упрямыми? :)
dictionary[value] = #dictionary + 1
: где#
обозначает количество всех объектов. Что я интересно , почему вы не хотите: во всех здравомыслящих прецедентах для # (см ответа на kaizer.se), подсчет всех объектов в точности равен тому , что уже # возвратов; похоже, что # подсчитывать все - это строго улучшение. Конечно, я новичок в Lua и могу упустить суть.