ch04.md 2.2 KB

Глава 4. Последовательности

Ранее уже было указано, что строка — это последовательность символов. Nim также поддерживает последовательности произвольного типа, называемые seq. Например, последовательность целых чисел записывается как seq[int], а последовательность объектов Point — как seq[Point].

Мы хотим иметь возможность рисовать не только отдельные пиксели. Процедура putPixels позволяет это сделать:

  proc putPixels(points: seq[Point]; col: Color) = # 1
    for p in items(points):                        # 2
      pixels.putPixel p.x, p.y, col                # 3
  putPixels(@[Point(x: 2, y: 3), Point(x: 5, y: 10)], Gold) # 4
  • 1 putPixels принимает список точек.
  • 2 Итератор items позволяет перебирать параметр points.
  • 3 Каждый нарисованный нами пиксель имеет один и тот же цвет col. Вызов процедуры putPixel выполняется из модуля pixels. Как можно видеть, идентификатор можно дополнить указанием модуля, в котором он был объявлен. Иногда это улучшает читаемость кода.
  • 4 Вызов новой процедуры putPixels с помощью последовательности @[Point(x: 2, y: 3), Point(x: 5, y: 10)].

Последовательность можно создать с помощью @[...]. Пустая последовательность — в виде @[]. Последовательности обеспечивают произвольный доступ: доступ к i-му элементу можно получить через s[i]. Индексация начинается с 0. Такое же обозначение доступно для строк.