Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
值声明中的Scala泛型推理/下界_Scala_Generics_Inference - Fatal编程技术网

值声明中的Scala泛型推理/下界

值声明中的Scala泛型推理/下界,scala,generics,inference,Scala,Generics,Inference,我是Scala的新手,一直在尝试在Lift中开发一个数据网格,它可以让我轻松地显示数据(它也可以作为一种Scala/Lift练习,以便更好地掌握该语言)。无论如何,我似乎被泛型推理所困扰 我有一个抽象网格类,所有的具体网格都会扩展它。然后,他们通过columns字段定义自己的列。我想实现默认排序,但无法确定如何使必要的推理正常工作。以下是(非常简化的)代码: //电梯类 特征映射器[A下一行中的问题: val columns: List[Column[_]] // in '_' 我建议将类型参

我是Scala的新手,一直在尝试在Lift中开发一个数据网格,它可以让我轻松地显示数据(它也可以作为一种Scala/Lift练习,以便更好地掌握该语言)。无论如何,我似乎被泛型推理所困扰

我有一个抽象网格类,所有的具体网格都会扩展它。然后,他们通过
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)
  }
}