相关疑难解决方法(0)

如何在Scala中设置多个类型边界?

我希望能够声明这样的东西:

trait Narrowable[A] extends Iterable[A] {

    def narrow[B <: A & B <: AnyRef] : Iterable[B]

}
Run Code Online (Sandbox Code Playgroud)

它的类型B应该是既有的亚型A AnyRef.这可能吗?

generics scala

67
推荐指数
1
解决办法
1万
查看次数

scala类型别名 - 如何使用表示多种数据类型的类型

是否可以定义表示多个数据类型的类型别名?

package object scala {
  type SingleDimension = Double
  type MultiDimensionMap = Map[String, Double]
  type MultiDimensionList = List[Tuple2[String, Double]]
}
Run Code Online (Sandbox Code Playgroud)

例如,我需要一个suptertype让我们说DataDimension只代表三种类型.所以我可以做到以下几点:

trait AbstractDataWorker[T] {

  def formula(d: Double): T
}


class multiDimensionWorker extends AbstractDataWorker[MultiDimensionMap] {

  type T = MultiDimensionMap
  override def formula(d: Double): MultiDimensionMap = {

    Map[String, Double]()
  }

}

class singleDimensionWorker extends AbstractDataWorker[SingleDimension] {

  type T = SingleDimension
  override def formula(d: Double): SingleDimension = {
    2.0
  }

}
Run Code Online (Sandbox Code Playgroud)

但是下面应该给出编译错误.目前它的作品.

class stringDimensionWorker extends AbstractDataWorker[String] {

  type T = String
  override def …
Run Code Online (Sandbox Code Playgroud)

scala

0
推荐指数
1
解决办法
2292
查看次数

标签 统计

scala ×2

generics ×1