Значение и выражение#
В MD многие атрибуты содержат выражения. XML-кавычки отделяют атрибут, а внутренние одинарные кавычки задают строковый литерал MD.
<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 внутри обработчика:
<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 никогда не позволяет промежуточные переменные». Изолируйте спорное выражение и сравните результат в игре.