我有几个包含数值的类(该值可以有界,只能是正数,aso ...)
我必须根据这些类的“超类型”进行一些基本操作(如求和)。所以我为它定义了一个特征,认为它会是微不足道的......
这是我的代码的可运行摘录:
object Main extends App {
trait WithValue[A] {
def value: A
}
class BoundedNumber[A](val lower: A, val upper: A, val value: A) extends WithValue[A]
case class NumberBetween0and99(value: Int) extends BoundedNumber[Int](0, 99, value)
case class UnboundedPositiveInt(value: Int) extends WithValue[Int]
case class UnboundedPositiveDouble(value: Double) extends WithValue[Double]
override def main(args: Array[String]) {
val map: Map[Symbol, WithValue[_]] = Map(
'foo -> UnboundedPositiveDouble(5),
'bar -> UnboundedPositiveInt(10),
'baz -> NumberBetween0and99(55)
)
for (m <- map) println(5 + m._2.value)
}
}
for 循环失败:
overloaded method value + with alternatives: (...) cannot be applied to (Any)
我在这个非常微不足道的问题上绕了几个小时……猜想我在 Scala 中的流利程度远非“流利”……