Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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,访问trait中抽象类型的类_Scala_Scala 2.8 - Fatal编程技术网

Scala,访问trait中抽象类型的类

Scala,访问trait中抽象类型的类,scala,scala-2.8,Scala,Scala 2.8,我正在Scala代码中试验隐式变量。我编写了以下示例代码,但不幸的是它无法编译。我在想,有人知道这里少了什么吗?(在linux上使用scala 2.8.0和SBT 0.7.4) 谢谢, 阿里 trait提要 特性饲料厂{ 类型TT在编译时被遗忘(参见类型擦除)。但scala提供了Manifests,通过编译来保留类型 这里是一个更完整的。谢谢,我用隐式val op_name={def op_name[T](隐式m:scala.reflect.Manifest[T])={m.getClass.ge

我正在Scala代码中试验隐式变量。我编写了以下示例代码,但不幸的是它无法编译。我在想,有人知道这里少了什么吗?(在linux上使用scala 2.8.0和SBT 0.7.4)

谢谢, 阿里

trait提要
特性饲料厂{

类型TT在编译时被遗忘(参见类型擦除)。但scala提供了
Manifest
s,通过编译来保留类型


这里是一个更完整的。

谢谢,我用隐式val op_name={def op_name[T](隐式m:scala.reflect.Manifest[T])={m.getClass.getCanonicalName};op_name}修复了它但是我觉得它看起来有点难看,因为我需要定义一个隐式变量,有更好的方法吗?@Ali使用scala 2.8,您应该能够使用
def op_name[T:Manifest]=隐式[Manifest[T]].getClass.getCanonicalName
Ali您的解决方案不起作用。它总是不返回任何内容。您可能应该编写val op_name={def op_name[T](隐式m:scala.reflect.Manifest[T])={m.getClass.getCanonicalName};op_name[T]},它说错误:没有可用于X.this.T的清单
trait Feed 
trait FeedFactory  {   
type T <: Feed   
implicit val op_name = classOf[T].getCanonicalName    
def create():T   
def destroy(op:T)   
}

Error: class type required but FeedFactory.this.T found    
implicit val op_name = classOf[T].getCanonicalName