上下文子类型的类型参数

时间:2015-12-14 20:30:05

标签: scala scala-macros

我现在已经多次对这个构造进行了类和方法回合我不明白为什么要使用:

 var names = "Amila,Asanka,Imaad,Kelum,Lakshan,Sagara,Thilina";
 var nameArr = names.split(",");
 console.log( nameArr );

而不是:

class MyClass[C <: Context](ctx: C)

是否可以解决协方差问题?

另一个问题如下:

class MyClass(ctx: Context)

为什么不简单地使用:

abstract class YYTransformer[C <: Context, T](c: C, t: T) {
     type Ctx = C
}

由于

1 个答案:

答案 0 :(得分:2)

问题1

它们基本相同,只是在:

class MyClass[C <: Context](ctx: C)

你跟踪ctx变量的类。 通过这种方式,可以执行以下操作:

class MyClass[C <: Context](ctx: C) {
  val m: List[C]
}

这是不可能的:

class MyClass(ctx: Context) {
  val m : List[???]
}

问题2

如前所述Seth Tisue.type不会返回您正在调用的对象类型.type,而是单例类型,即“适合”的类型“只有这样的对象。