Использование scala.BigDecimal с Joda-Money

Я пытаюсь использовать Scala BigDecimal с Joda-Money. Передача скалы BigDecimal в Money.of() не работает, потому что ожидает Java BigDecimal.

[error] C:\test.scala:82: overloaded method value of with alternatives:
[error]   (x$1: org.joda.money.BigMoneyProvider,x$2: java.math.RoundingMode)org.joda.money.Money <and>
[error]   (x$1: org.joda.money.CurrencyUnit,x$2: Double)org.joda.money.Money <and>
[error]   (x$1: org.joda.money.CurrencyUnit,x$2: java.math.BigDecimal)org.joda.money.Money
[error]  cannot be applied to (org.joda.money.CurrencyUnit, scala.math.BigDecimal)
[error]     Money.of(gbp, a)
[error]           ^

я могу использовать .underlying который работает:

val gbp = CurrencyUnit.of("GBP")
val  a = BigDecimal("2.2")
Money.of(gbp, a.underlying)

Но есть ли лучший способ, как неявное преобразование, которое уже существует где-то?

1 ответ

Решение

Похоже, в scala.math.BigDecimal, есть только

implicit def javaBigDecimal2bigDecimal(x: java.math.BigDecimal): BigDecimal = 
    BigDecimal(x)

так что вам придется определить это самостоятельно:

implicit def scalaBigDecimal2bigDecimal(x: BigDecimal): java.math.BigDecimal = 
    x.underlying

Я не знаю, есть ли какие-либо библиотеки, которые уже обеспечивают это преобразование, хотя.

Другие вопросы по тегам