Перейти к содержимому
  • 0
ShuraGamer

Вопрос по таблицам Lua

Вопрос

Итак, господа программеры, вы наверняка знаете такую штуку как # перед названием таблицы, не так ли? Меня, если честно, после C очень зацепила такая удобная финтифлюшка) Итак, господа, начнем с примера:

 

table = {}

table[1] = 2

table[2] = 1

table[3] = 6

table[5] = 3

table[6] = 4

a = #table

 

Кто хоть немного знаком с волшебной решеточкой, знает, что переменная a примет значение 3, ибо это наибольшая "непрерывная" ячейка, то есть самая первая, следущая ячейка которой принимает значение nil. Так вот, вопрос: каким образом вывести непрерывную не ячейку, а значение? Поясню: в ситуации выше это было бы 4. Надеюсь, не слишком сумбурно :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

Самым простым решением мне кажется упорядочить таблицу при помощи table.sort, а потом пройтись по возрастающим элементам и найти где закономерность возрастания прервется. Интересно, что после table.sort таблица будет по прежнему содержать один отсутствующий элемент (для таблицы, приведенной в примере), но # будет возвращать фактически максимальный индекс, т.е. 6 а не 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А чего это 3?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Самым простым решением мне кажется упорядочить таблицу при помощи table.sort, а потом пройтись по возрастающим элементам и найти где закономерность возрастания прервется. Интересно, что после table.sort таблица будет по прежнему содержать один отсутствующий элемент (для таблицы, приведенной в примере), но # будет возвращать фактически максимальный индекс, т.е. 6 а не 3

То есть table.sort переназначит значения таблицы в порядке возрастания? Тогда можно просто скопировать таблицу в другую переменную и затем уже сортировать. Спасибо

А чего это 3?

Того, что после следущая ячейка после table[3] принимает значение nil. Более простым языком, # ищет "дырки" в таблице ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...