簡體   English   中英

使用返回不同數值類型值的方法定義特征

[英]Defining a trait with a method that return a value of different numeric type

我有幾個包含數字值的類(該值可以是有界的,只能是正數,也可以...)

我必須基於這些類的“超類型”進行一些基本操作(如求和)。 所以我為它定義了一個特質,認為它會變得微不足道...

這是我的代碼的摘要:

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的流利程度遠非“流利” ...

我認為您可以使用類似的方法來解決您的問題: Scala:如何定義“通用”函數參數?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM