От: | Oyster | https://github.com/devoyster | |
Дата: | 14.04.06 05:43 | ||
Оценка: | 54 (3) |
def m3 = 1 g;
def m4 = Si.Mass(m1);
WriteLine($"Mass in SI: $m4, in CGS: $m3");
def x1 = Si.Area(1 cm * 10 m);
WriteLine($"Area of 1 cm * 10 m = $x1 m")
basisUnits (Si)
(
Mass[ kg ],
Length[ m ],
Time[ sec ],
Temperature[ K ],
CurrentStrength[ A ],
LightIntensity,
QuantityOfSubstance
)
У решения всё равно есть некоторые недостатки:
На данный момент нельзя навесить атрибут на сборку из макро-атрибута, который сам навешен на сборку. Не знаю, исправят ли это в будущем (т.е. баг ли это), но сейчас макро-атрибут UnitsDefinition (в котором задаётся описание юнитов) задан с MacroTargets.Class (т.е. его обязательно надо вешать на какой-то — неважно, какой — класс).
Принципиально нельзя использовать юнит-литералы из той же сборки, в которой расположено описание юнитов. Это связано с тем, что юнит-литералы определяются как макро-операторы (использована идеяАвтор: Vermicious KnidVermicious Knid-а), а оператор нельзя создать и использовать в той же сборке (поскольку информация об операторе должна быть известна на этапе парсинга, а создаётся он в макросе, который выполняется уже после парсинга).
Дата: 05.04.06
В описании физических юнитов заданы не все литералы (лень). Надеюсь, описание будет наполнено теми людьми, которым действительно будет нужна эта библиотека (если таковые найдутся).
Тем не менее, все эти недостатки достаточно невелики и не мешают пользоваться библиотекой.