Привет! Я хотел бы предложить концепцию системы единиц измерения с полной типобезопасностью, хорошей производительностью и полной расширяемостью! Для нетерпеливых: github .
Пример работы Существует несколько существующих решений для ЭИ , Например, Юнитснет И Единицы измерения в F# .
Оба решения популярны и выполняют свою работу.
Но здесь мы сделаем полностью расширяемую систему.
Мы также хотим автоматического преобразования пользовательского интерфейса.
Итак, начнем.
Выполнение
Основной принцип заключается в том, что мы не делим единицы на физические величины.У нас нет длин, расстояний, времени, массы, площади и т. д. Но в то же время каждая единица имеет основную единицу и значение.
Пользовательский интерфейс может иметь любой базовый интерфейс.
Для простоты я возьму SI в качестве базового пользовательского интерфейса.
Например, для километра базовой единицей будет метр (1000 метров в километре).
Для грамма – килограмма (0,001 кг на г).
Для метра базовой единицей также является метр (1:1).
Вот как выглядит интерфейс, реализованный каждым блоком:
База – количество базовой единицы в нашей.public interface IBaseUnit<T, TNumber> { TNumber Base { get; } string Postfix { get; } }
Постфикс — это просто текстовый эквивалент. Например, минута определяется так: public struct Minute<TNumber> : IBaseUnit<Second<TNumber>, TNumber>
Теги: #программирование #C++ #.
NET #F# #юниты #общая математика
-
Прокси Для Android
19 Oct, 24 -
Классика Живописи И Ценообразование Проектов
19 Oct, 24 -
Хайку В Scale 5X — День Первый. Продолжение.
19 Oct, 24