Some classes to make you sharp more dynamic
Tlib несет с собой определенный стиль написания программы, который можно выразить так - необходимо и достаточно.
Ключевые особенности
- Мы не беспокоимся заранее об объявлении переменных, и проектировании класса. Мы просто пишем код, и добавляем весь необходимый функционал и данные (переменные, структуры) по мере необходимости
- Мы используем унифицированные декларации функций и данных.
- Архитектура приложения похожа на слоенный пирог, где каждый класс занимает определенный уровень, и полностью исключаются взаимодействия в одном уровне. При этом фунционал как бы перетекает из слоя в слой, чтобы оказаться точно на своем месте. Иными словами если функционал описанный на нижнем уровне нужен в соседнем классе, просто поднимем его выше.
функция - это некоторый участок кода используемый как единица. Поскольку t является динамической структурой. Передав в качестве параметра t, мы уже не будем беспокоится о том какие именно аргументы нам нужно принять, мы будем добавлять данные по мере необходимости в один переданный параметр t. Аналогично, вернув t, мы сможем вернуть любой массив данных. Тогда мы объявим любую функцию так
t f_name (t args)
{
return new t();
}Более реальный пример отражающий суть работы с данными внутри функции
t f_func (t args)
{
string some_str=args["some_str"].f_str(); //получаем некоторую строку
DataTable tab=args["tab"].f_val<DataTable>(); //получаем текоторую таблицу
t res=new t();
... //выполняем некоторую работу, в том числе наполняем результирующий t res
res["some_val"]=new t(val);
return res;
}или так
t f_func (t args)
{
int id_item=args["some_str"].f_def(0).f_val<int>(); //получаем некоторый id
DataRow tab=args["row"].f_val<DataRow>(); //получаем текоторую строку
... //выполняем некоторую работу
//формируем на лету и возвращаем результаты
return new t()
{
{"some_str_val", str_val},
{
"data", new t()
{
{"val_1", val_1},
{"val_2", val2}
}
}
};
}Пример функций