2.5. Анонимные структуры

Ссылка на источник.
Анонимные структуры — используются для объединения данных без явного создания типа. В примере, написанном ниже, создается структура с двумя полями x и name, которые получают значения «12» и «foo» соответственно:

Общие правила синтаксиса:

  1. Структура заключается в фигурные скобки {};
  2. Пары ключ-значение разделяются запятой;
  3. Между ключом и значением ставится двоеточие;
  4. Значением может быть любое выражение на языке Haxe.

Четвертое правило говорит о том, что структуры могут быть вложенными и сложными, например:

Поля структур могут быть получены, как и классы, используя точку (.), как в примере ниже:

Также для вывода всех полей анонимной структуры, может быть использовано Reflection:

Вот что будет выведено:
name => Butterfly version => 0.3

Стоит отметить, что использование анонимных структур не подрывает, существующую в Haxe, систему типизации. Компилятор гарантирует, что доступны только существующие поля. Это означает что следующая программа не будет скомпилирована.

Полученная ошибка свидетельствует о том, что компилятор знает как был объявлен тип point : это структура с полями x и y типа Float. Поскольку поля z не существует, то доступ будет запрещен. Тип point известен благодаря определению типов. Именно ему мы должны сказать спасибо за то, что у нас нет необходимости каждый раз явно определять типы. Однако, если   point является полем, то явное определение типов обязательно:

Что бы избежать лишнего декларирования типов, особенно для более сложных структур, советуют использовать typedef:

5.5 Объявление массивов

Оригинал статьи.
Элементы массива разделяются запятыми , и заключаются в квадратные скобки []. Пустыми квадратными скобками [] объявляется пустой массив, в то время как [1, 2, 3] инициализирует массив с тремя элементами $1$, $2$, $3$.

Так же, как и в других языках программирования, в haxe многомерные массивы создаются на основе одномерных, у которых элементы являются массивами.

Сгенерированный код может быть менее кратким на платформах, которые не поддерживают инициализацию массива. В итоге такой код инициализации массива из трех элементов var arr = [1, 2, 3];  будет выглядеть следующим образом:

Это следует учитывать, когда функция должна быть встроенной, так как это может содержать больше кода, чем в данном синтаксисе.
Усовершенствованные методы оптимизации можно посмотреть здесь.

Пример использования массива.

Решение на Try Haxe !