Здається, питання "дозвольте мені погуглювати це для вас", але я чомусь не можу знайти відповідь. Луа#
рахує записи лише з цілими ключами, і це робить 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), підрахунок всіх об'єктів в точності дорівнює тому , що вже # повернень; здається, що зробити # рахувати все - це суто вдосконалення. Звичайно, я новачок Луа і, можливо, не вистачає суті.