Scala类型别名用于数字列表

时间:2014-08-25 08:00:07

标签: scala generics types polymorphism alias

而不是像这样对每个可能的数字子类别进行别名,

type ICoord = List[Int]
type LCoord = List[Long]
type FCoord = List[Float]
...

如何为任何数字类型定义别名,尝试过

import math.Numeric
type Coord[ T <: Numeric] = List[T]  //error: trait Numeric takes type parameters

1 个答案:

答案 0 :(得分:2)

这是不可能的。您需要一个上下文绑定[T: Numeric]而不是一个子类型绑定<:,但是类型同义词中不允许上下文边界,只能在类或方法声明中使用(这是有意义的,因为它们被转换为额外的构造函数/方法参数)。您必须以其他方式使隐式可用(哪一个取决于您想要做什么)。