Мощная работа с конфигурациями и данными. Pick/Omit, Merge, Path Helpers и DeepCopy для чистоты кода.
Выберите подход, который лучше подходит для вашей задачи
// ✨ Fluent API — собираем структуру по частям // Базовая конфигурация + переопределение пользователя Конфиг = A1sDS.On(Дефолты) .Set("apiKey", ПолучитьКлюч()) .Set("timeout", 60) .Value(); // Очистка данных для API (безопасный код) ДляAPI = A1sDS.On(СырыеДанные) .Omit("Пароль", "Токен") .Rename(A1sDS.Of("ИНН", "tax_id")) .Value(); // Массовая трансформация значений СНадбавкой = A1sDS.On(БазовыеЦены) .Transform("Цена", "v * 1.2") .Value();
// 📦 Static API — Утилиты и Создание // Создание из пар (удобно!) Конфиг = A1sDS.Of( "host", "localhost", "port", 8080, "ssl", Истина ); // Парсинг Query String GET = A1sDS.OfQueryString("name=John&age=30&city=Moscow"); // GET["name"] -> "John" // Pick / Omit (Фильтрация) Публичные = A1sDS.OfPick(Полная, "id,name"); Безопасные = A1sDS.OfOmit(Полная, "password"); // Merge (Слияние) Итого = A1sDS.Merge(Дефолты, Пользователь); // Последний аргумент перезаписывает ключи
| Задача | ❌ Было (Классика) | ✅ Стало (A1sDS) |
|---|---|---|
| Создание структуры |
Структура = Новый Структура;
|
Структура = A1sDS.Of("Ключ1", Знач1, "Ключ2", Знач2);
|
| Удаление полей |
// Нужен цикл или ручное удаление
|
Результат = A1sDS.OfOmit(Исх, "Секрет", "ВнутреннийID");
|
| Слияние |
// Нужен цикл и перебор полей
|
Результат = A1sDS.Merge(База, Переопределения);
|
Мгновенное создание "срезов" структуры для UI или безопасной отправки на API.
Умное слияние структур. Применение дефолтов без перезаписи пользовательских данных.
Работа с вложенными структурами через строковый путь ("ui.theme.dark"). Автосоздание узлов.
Парсинг Query String (URL) и простых строк "Ключ=Значение" в одну структуру.
Массовое переименование ключей структуры (например, для адаптации под внешний API).
Полное глубокое копирование структуры, безопасное для вложенных значений.
Продвинутая работа с конфигурациями.
// ═══════════════════════════════════════════════════════════ // СЦЕНАРИЙ: Работа с сложной конфигурацией (Nested Structures) // ═══════════════════════════════════════════════════════════ // Инициализируем пустую структуру настроек Настройки = Новый Структура; // ✅ GetOrInsertPath — Автоматически создает промежуточные узлы! // Нужна ui.theme.dark? Структура создаст сама. A1sDS.GetOrInsertPath(Настройки, "ui.theme.dark", Истина); A1sDS.GetOrInsertPath(Настройки, "ui.theme.fontSize", 14); A1sDS.GetOrInsertPath(Настройки, "api.timeout", 30); // Результат: Структура с полной иерархией, созданная одной функцией // Настройки.ui.theme.dark -> Истина // Настройки.api.timeout -> 30
Точка входа: A1sDS.On()
| Метод | Описание |
|---|---|
.Set(K, V) |
Установить значение ключа. |
.SetIf(K, V, Condition) |
Установить значение по условию. |
.SetMany(Struct) |
Массовая установка из структуры. |
.Remove(K) |
Удалить ключ. |
.Pick(Keys) |
Оставить только указанные ключи. |
.Omit(Keys) |
Исключить указанные ключи. |
.Merge(Struct) |
Слить со структурой (переписывает). |
.Defaults(Struct) |
Слить, но НЕ переписывать существующие. |
.Rename(Map) |
Переименовать ключи (map: {Old: New}). |
.Transform(K, Expr) |
Изменить значение ключа (v*2). |
.DeepCopy() |
Глубокая копия структуры. |
| Метод | Возвращает | Описание |
|---|---|---|
.Value() |
Structure | Результирующая структура. |
.ToFixed() |
FixedStructure | Фиксированная структура. |
.Get(K, Default) |
Variant | Получить значение (или Default). |
.Keys() |
Array | Массив ключей. |
.Values() |
Array | Массив значений. |
.ToPairs() |
Array | Массив структур {Ключ, Значение}. |
.Count() |
Number | Количество свойств. |
.HasKey(K) |
Boolean | Проверка наличия ключа. |
.IsEmpty() |
Boolean | Проверка на пустоту. |
.ToString() |
String | Строковое представление. |
.ToJSON() |
String | JSON-представление. |
| Функция | Описание |
|---|---|
Of(K, V, ...) |
Создает структуру из пар. |
OfString(Str) |
Парсит "K=V" строку. |
OfQueryString(QS) |
Парсит URL параметры. |
OfKeysAndValues(Keys, Values)
|
Из массивов. |
Pair(K, V) |
Создает пару. |
OfPairs(Array) |
Из массива пар. |
| Функция | Описание |
|---|---|
OfPick(Struct, Keys) |
Новая структура только с этими ключами. |
OfOmit(Struct, Keys) |
Новая структура без этих ключей. |
OfRename(Struct, Map) |
Переименовывает ключи по карте. |
OfDefaults(Struct, Defaults)
|
Применяет дефолты (не затирая существующие). |
| Функция | Описание |
|---|---|
Merge(Base, ...) |
Слияние (последние имеют приоритет). |
Union(...) |
Уникальные ключи. |
Intersection(...) |
Ключи, присутствующие во всех. |
Difference(...) |
Разность ключей. |
| Функция | Описание |
|---|---|
GetOrInsert(Struct, K, V)
|
Возвращает или вставляет дефолт. |
GetOrInsertPath(Struct, Path, V)
|
Путь "ui.theme" (авто-создание). |
DeepCopy(Struct) |
Полное глубокое копирование. |
HasKey(Struct, K) |
Проверка наличия. |
GetKeys(Struct) |
Массив ключей. |
GetValues(Struct) |
Массив значений. |
ToPairs(Struct) |
Массив структур {Ключ, Значение}. |
IsEmpty(Struct) |
Проверка на пустоту. |