Skip to content

fffixed/test_adt_scala

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 

Repository files navigation

test_adt_scala

Все расчеты ведутся в Double.

Для денежных операций заведен трейт AlmostMoney, для отделения денег от обычных числе заведены два кейс-класса Money и Number.

Сделать из числа Money можно также через постфикc .$, сделать Number можно посфиксом .n.

При попытке произвести невозможную операцию будет выкинут эксепшн.

При создании элемента формулы нужно обернуть значения в MoneyFormula(), либо для сокращения в F(). Передать внутрь можно как AlmostMoney, так и Double, который преобразуется в Number, если передать строку, её текст будет рассматриваться как именованный параметр формулы.

Как альтернатива создания формулы, можно к значениям AlmostMoney добавлять постфикс .mf.

Для расчета формулы по конкретным значениям нужно передать в её метод apply список пар ("имя_параметра" -> AlmostMoney значение).

Пример использования:

import dsl.MoneyFormulaDsl._

//создать формулу
val example1 = F(23.$) * (F("w") + F(5))
println(example1) // $23.0 * (w + 5.0)
val res1 = example1("w" -> 2.n)
println(res1) // $161.0

//для удобство записи можно подключить дополнительные имплиситы
import dsl.MoneyFormulaDsl.ImplicitFormulaHelper._
val example2 = 23.$.mf * "w" / 4
println(example2) // $23.0 * w / 4.0
val res2 = example2("w" -> 2.n)
println(res2) // $11.5

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages