值声明中的Scala泛型推理/下界
我是Scala的新手,一直在尝试在Lift中开发一个数据网格,它可以让我轻松地显示数据(它也可以作为一种Scala/Lift练习,以便更好地掌握该语言)。无论如何,我似乎被泛型推理所困扰 我有一个抽象网格类,所有的具体网格都会扩展它。然后,他们通过值声明中的Scala泛型推理/下界,scala,generics,inference,Scala,Generics,Inference,我是Scala的新手,一直在尝试在Lift中开发一个数据网格,它可以让我轻松地显示数据(它也可以作为一种Scala/Lift练习,以便更好地掌握该语言)。无论如何,我似乎被泛型推理所困扰 我有一个抽象网格类,所有的具体网格都会扩展它。然后,他们通过columns字段定义自己的列。我想实现默认排序,但无法确定如何使必要的推理正常工作。以下是(非常简化的)代码: //电梯类 特征映射器[A下一行中的问题: val columns: List[Column[_]] // in '_' 我建议将类型参
columns
字段定义自己的列。我想实现默认排序,但无法确定如何使必要的推理正常工作。以下是(非常简化的)代码:
//电梯类
特征映射器[A下一行中的问题:
val columns: List[Column[_]] // in '_'
我建议将类型参数转换为类型变量(使用嵌入式多态性):
非常感谢,效果相当不错。另外,你教了我嵌入式多态性。干杯,非常感谢!
val columns: List[Column[_]] // in '_'
//Grid
abstract class Grid {
trait Column {
type F
type O <: Mapper[O]
val label: String
val alias: String
val column: MappedField[F, O]
}
object Column {
def apply[F1, O1 <: Mapper[O1]]
(l : String, a : String, c : MappedField[F1, O1]) =
new Column {
type F = F1
type O = O1
val label = l
val alias = a
val column = c
}
}
val columns: List[Column]
def sort(by: List[String]) = {
columns.filter(c => by.contains(c.alias)).map(c => OrderBy(c.column))
}
}
class ItemsGrid extends Grid {
val columns = List(Column("Name", "name", Items.name))
def sortWorking(by: List[String]) = {
val col = Column("Name", "name", Items.name)
OrderBy(col.column)
}
}