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:

Даша Тарабаева
Даша Тарабаева

Latest posts by Даша Тарабаева (see all)

4 thoughts on “2.5. Анонимные структуры

  1. Пока лучшее из того, что я видел. Но…
    — Укажите номер 2.5 в заголовке и сделйте 2-5 постоянной ссылкой.
    — Текст «haxe.org/manual» излишний. Уж лучше сделать слово «источник» гиперссылкой.
    — Сделайте правильные отступы в коде.
    — Слово «разделяет» с «от» не употребляется.
    — Если Вы пишите «Четвертое правило», то список должен быть нумерованным (ordered list).
    — Разберитесь с «нельзя нарушить» = невозможно, а «нельзя нарушать » = запрещающее правило.
    — Используйте crayon с опцией inline, если упоминаете что-либо из вашего кода (переменные, функции и т.п.).
    — Добавьте свою программу с анонимными структурами. Либо прямо здесь, либо ссылкой на другую Вашу (или чужую) работу на этом сайте, где они есть.
    — сделайте гиперссылки на другие страницы этого сайта по аналогии с первоисточником.

  2. — Мне все еще не нравится. Смысл должен быть такой: «Стоит отметить, что использование анонимных структур не подрывает систему типизации. Компилятор гарантирует, что доступны будут только существующие поля. Т.е. следующая программа не будет скомпилирована.
    — Сделайте, пожалуйста, ссылки на наш сайт, а не на сайт с документацией на английском. Даже если нужной статьи пока нет, можно догадаться как она будет называться. Например, относительная ссылка на 3.6 Type Inference будет выглядеть как «3-6».

Добавить комментарий