Значение и выражение#

В MD многие атрибуты содержат выражения. XML-кавычки отделяют атрибут, а внутренние одинарные кавычки задают строковый литерал MD.

XML
<set_value name="$Label" exact="'Hello, X4'" />
<set_value name="$Count" exact="3" />
<set_value name="$Ready" exact="false" />
<set_value name="$Items" exact="[]" />
<set_value name="$ByID" exact="table[]" />

Список и таблица нужны для разных способов доступа. Элементы списка читаются как $Items.{1}, именованные ключи таблицы - как $ByID.{$Key}.

Проверяйте форму запроса#

Пример проверки входа от UI внутри обработчика:

XML
<do_if value="typeof $Payload == datatype.list and $Payload.count == 2">
  <set_value name="$Label" exact="$Payload.{1}" />
  <set_value name="$Enabled" exact="$Payload.{2}" />
</do_if>

Корректная длина списка не подтверждает типы его элементов. Перед применением настройки проверьте текст и значение переключателя.

Существование и область видимости#

not $Records? используется для проверки наличия переменной. Для объекта дополнительно проверяется .exists. Ссылка на другой cue явно указывает контекст, например Init.$Records.

Не заменяйте проверку существования переменной проверкой её содержимого: false, пустой список и отсутствующая переменная означают разные состояния.

Свойство может зависеть от контекста#

При исследовании экипажа промежуточное присваивание npctemplateentry потеряло нужный контекст. Рабочий вариант читал полный путь к признаку человека непосредственно от корабля.

Это наблюдение относится к конкретному типу псевдосвойства. Не превращайте его в правило «MD никогда не позволяет промежуточные переменные». Изолируйте спорное выражение и сравните результат в игре.