@neFormal
neFormal
27 Dec 2017

Статически типизированные языки не могут парсить конфиги. Потому что содержимое конфига меняется динамически, а язык так не умеет.

#ojvkw 10
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
27 Dec 2017

neFormal, а как же YAML. Конфиги на YAML-е умеют парсить все стат-тип-языки, не?

#ojvkw/1
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
27 Dec 2017

они умеют парсить только определённое подмножество ямлов
если под одинаковыми ключами будут две разные структуры, то статика уже соснёт. а на этом можно делать очень красивую логику

#ojvkw/2 в ответ на /1
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
27 Dec 2017

neFormal, не могу воспроизвести, дай пример плиз

#ojvkw/3 в ответ на /2
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
27 Dec 2017

думаю, можно взять даже простой случай:
items:
object: 1
object: "a"

#ojvkw/4 в ответ на /3
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
27 Dec 2017

ну да. список забыл
head:
- object: 1
- object: "1"

#ojvkw/6 в ответ на /5
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
27 Dec 2017

neFormal, хм, не знаю пока как, но вот такой код на плюсах:

    auto config = YAML::LoadFile("config.yaml");
    auto head = config["head"];
    for (const auto& elem : head)
    {
        std::cout << elem << std::endl;
    }

у меня только что выдал

object: 1
object: !<!> 1

так что работает кажись поддержка в <yaml-cpp/yaml.h>
:)

#ojvkw/7 в ответ на /6
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
27 Dec 2017

ты это в структуры никакие не парсил
получается, что нужно будет кастить при каждом обращении
так-то если объявить базовый Object, то как будто поддержка есть везде

#ojvkw/8 в ответ на /7
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
27 Dec 2017

neFormal, имхо надо одним проходом пройтись по конфигу и скрафтить на его основе некое дерево/граф. И уже потом работать с ним без кастования. Сто раз обращаться к YAML::Node не надо, YAML это не хранилище. Хранить лучше в нормальной типизованной структуре данных, ну вот как компиляторы парсят сырцы в AST и потом не "кастят при каждом обращении"

#ojvkw/9 в ответ на /8
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
27 Dec 2017

ну и получится у тебя какой-нибудь класс с кучей пустых опциональных полей или union'ом.
в динамическом словаре это хранить намного удобней

#ojvkw/10 в ответ на /9
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.