Архив SS13 · Форум · Вики по состоянию на

DM Guide 10

Материал из Animus Station 13
Перейти к: навигация, поиск

Это 10 глава перевода оригинального руководства по Dream Maker от разработчиков.

Остальные главы руководства и статьи о программировании на коде BYOND от любителей на русском.

Оригинальная 10 глава руководства на английском языке



Данная статья помечена как не оконченная. Это означает, что статья может быть не верна или не актуальна.
Jobeng.png


Вы можете прочитать эту статью на английской wiki или помочь проекту с её завершением, подробнее можно узнать в портале сообщества.


Глава 10: Списки

Тёмная и прохладная тишина была нарушена захлебывающимся кровью, истошным и повизгивающим писком телефонного модема. Один свидетель позднее описал его как звук мощностью в 28.8 килодецибелл из огромного комка постоянного тока.

Список - объект данных, содержащий ряд значений. Каждый элемент в списке имеет собственный номер, которые начинаются с 1. Это число называется индексом (index) элемента и используется для получения к нему доступа. Таким образом, можно заметить схожесть списков в DM с массивами в языке программирования С.

Объявление списка

Объявить список можно несколькими способами. Первый - с помощью типа объекта list, как и с другими типами данных. Остальные способы используют специальный синтаксис, который создан специально для списков.

  1. var/list/mylist
  2. var/mylist[]
  3. var/mylist = new /list(size)
  4. var/mylist[size]

Первые два способа идентичны друг другу. Они просто задают переменную списка. Но стоит заметить, что они не создают объект списка. Здесь происходит тоже самое, что и при объявлении переменных любого другого типа (например, существа) - вы определяете только место хранения информации, но не саму информацию - значение списка будет null.

Третий и четвертый методы объявления списка задают также и некоторую переменную его размера. Она указывает сколько элементов может хранится в этом списке. Поскольку заданный размер можно изменить в любой момент, то эта переменная может равняться нулю.

Обращение к элементам списка

Вы можете получить доступ к конкретному элементу списка, указав его индекс в квадратных скобках [i].

Следующий пример, бесполезен, но он наглядно показывает как можно создать несколько объектов и запомнить их в списке.

var/dwarves[7]

world/New()
   var/i
   for(i=1,i<=7,i++)
      dwarves[i] = new/mob/dwarf()

Конкретные гномы могут быть доступны в любой момент, просто вам нужно воспользоваться их индексами: dwarves[1], dwarves[2].

Обращение к элементу с индексом меньше 1 или больше заданного количества элементов - ошибка. Она приведет к ошибке выполнения программы, так что будьте осторожны, важно находится в границах списка, о чем мы расскажем в следующем разделе.

Переменная len

Длина списка сохранена в его переменной len. С ее помощью хранится размер списка. Чаще всего переменную len используют, чтобы узнать сколько элементов находится в списке. Мы можем улучшить предыдущий пример таким образом, чтобы количество гномов определялось только в одном месте.

var/dwarves[7]

world/New()
   var/i
   for(i=1,i<=dwarves.len,i++)
      dwarves[i] = new/mob/dwarf()

Это очень частое использование цикла for. Обратите внимание на разницу между таким циклом для индексов списка и другим типом цикла for(i in dwarves), который перебирает элементы списка. Схожее с этим примером использование индексов нужно, когда вам требуется присвоить элементу другое значение.