我希望能够声明这样的东西:
trait Narrowable[A] extends Iterable[A] {
def narrow[B <: A & B <: AnyRef] : Iterable[B]
}
Run Code Online (Sandbox Code Playgroud)
它的类型B应该是既有的亚型A 和 AnyRef.这可能吗?
是否可以定义表示多个数据类型的类型别名?
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)