1

Joda-Money で scala BigDecimal を使用しようとしています。Java BigDecimal が予期されているため、scala BigDecimal を渡してもMoney.of()機能しません。

[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)

しかし、すでにどこかに存在する暗黙の変換のようなより良い方法はありますか?

4

1 に答える 1

3

scala.math.BigDecimalのように思えますが、

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

したがって、自分で定義する必要があります。

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

ただし、この変換を既に提供しているライブラリがあるかどうかはわかりません。

于 2014-02-28T09:55:12.537 に答える