0

数値を含むいくつかのクラスがあります (その値は制限することができ、正の値のみにすることもできます...)

これらのクラスの「スーパータイプ」に基づいて、いくつかの基本的な操作 (合計など) を行う必要があります。だから私はそれが些細なことになるだろうと思ってそれの特性を定義しました...

ここに私のコードの実行可能な抜粋があります:

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の流暢さは「流暢」とはほど遠いと思います...

4

1 に答える 1

1

これと同様の方法を使用して問題を解決できると思います: Scala: How to define "generic" function parameters?

于 2013-04-13T10:46:33.160 に答える