使用scala.BigDecimal和Joda-Money

时间:2014-02-28 09:18:36

标签: scala joda-money

我正在尝试使用Scala BigDecimal和Joda-Money。将scala 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 个答案:

答案 0 :(得分:3)

似乎在scala.math.BigDecimal中,只有

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

所以你必须自己定义:

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

我不知道是否有任何库已经提供此转换。