Измеренное значение состоит из (обычно неотрицательного) числа с плавающей запятой и единицы измерения. Дело в том, чтобы представить реальные величины и правила, которые ими управляют. Вот пример:
scala> val oneinch = Measure(1.0, INCH)
oneinch : Measure[INCH] = Measure(1.0)
scala> val twoinch = Measure(2.0, INCH)
twoinch : Measure[INCH] = Measure(2.0)
scala> val onecm = Measure(1.0, CM)
onecm : Measure[CM] = Measure(1.0)
scala> oneinch + twoinch
res1: Measure[INCH] = Measure(3.0)
scala> oneinch + onecm
res2: Measure[INCH] = Measure(1.787401575)
scala> onecm * onecm
res3: Measure[CMSQ] = Measure(1.0)
scala> onecm * oneinch
res4: Measure[CMSQ] = Measure(2.54)
scala> oncem * Measure(1.0, LITER)
console>:7: error: conformance mismatch
scala> oneinch * 2 == twoinch
res5: Boolean = true
Пока вы не слишком взволнованы, я не реализовал это, я просто придумал сеанс REPL. Я даже не уверен в синтаксисе, я просто хочу иметь возможность обрабатывать такие вещи, как добавление измеряемых величин (даже со смешанными единицами), умножение измеренных величин и т. Д., И в идеале мне нравится хваленая система типов Scala, чтобы гарантировать во время компиляции эти выражения имеют смысл.
Мои вопросы:
В идеале, я хотел бы использовать схему именования, которую имеет постоянная отмена (% путь% к% file.undo
) для всех этих вспомогательных файлов; нет очевидного способа установить его, но можно ли это сделать с помощью макросов Buf {Read, Write}
?