---
title: Переменные и выражения MD
summary: Строки, списки, таблицы, проверка существования и опасность потери контекста свойства.
section: scripting
kind: guide
status: example
tags: ["md","set_value","list","table","namespace","переменные"]
sources: ["https://wiki.egosoft.com/X4%20Foundations%20Wiki/Modding%20Support/"]
---
## Значение и выражение
В MD многие атрибуты содержат выражения. XML-кавычки отделяют атрибут, а внутренние одинарные кавычки задают строковый литерал MD.
```xml
```
Список и таблица нужны для разных способов доступа. Элементы списка читаются как `$Items.{1}`, именованные ключи таблицы - как `$ByID.{$Key}`.
## Проверяйте форму запроса
Пример проверки входа от UI внутри обработчика:
```xml
```
Корректная длина списка не подтверждает типы его элементов. Перед применением настройки проверьте текст и значение переключателя.
## Существование и область видимости
`not $Records?` используется для проверки наличия переменной. Для объекта дополнительно проверяется `.exists`. Ссылка на другой cue явно указывает контекст, например `Init.$Records`.
Не заменяйте проверку существования переменной проверкой её содержимого: `false`, пустой список и отсутствующая переменная означают разные состояния.
## Свойство может зависеть от контекста
При исследовании экипажа промежуточное присваивание `npctemplateentry` потеряло нужный контекст. Рабочий вариант читал полный путь к признаку человека непосредственно от корабля.
Это наблюдение относится к конкретному типу псевдосвойства. Не превращайте его в правило «MD никогда не позволяет промежуточные переменные». Изолируйте спорное выражение и сравните результат в игре.