我真的很喜欢 Scala 的灵活性和简洁性。有了这个金额的定义:
case class MoneyAmount(amount: Double, currency: Currency)
trait Currency
case object EUR extends Currency
case object USD extends Currency
您可以轻松创建实例:
val m1 = MoneyAmount(100, EUR)
使用范围内的以下定义会更容易:
implicit class DoubleMoney(amount: Double) {
def apply(currency: Currency) = MoneyAmount(amount, currency)
}
val m2 = 100 (EUR)
val m3 = 100 (USD)
我的问题是:有没有办法可以做到以下几点:
val m3 = 100 EUR // does not compile!
没有为每种货币(欧元、美元、...)定义函数?