Scala 中 Classtag 的错误使用?
Wrong usage of Classtag in Scala?
import scala.reflect.ClassTag
class IntStorage {
var variable: Int = 5
}
class testing[T : ClassTag] {
var example = Array.ofDim[T](10, 10)
def testFunc(): Int = example(0)(0).variable
}
错误:值变量不是 T
的成员
我不明白为什么会出现此错误,即使我使用了分类标签。
ClassTag
没问题。但是你声明 testing
为 any class 工作,而不仅仅是 IntStorage
。如果我调用 new testing[String]()
怎么办? String
是一个完全有效的 class,带有 class 标签,但它没有 variable
字段。我可以用任何 class.
来调用它
你的意思可能是
class testing[T <: IntStorage : ClassTag] { ... }
import scala.reflect.ClassTag
class IntStorage {
var variable: Int = 5
}
class testing[T : ClassTag] {
var example = Array.ofDim[T](10, 10)
def testFunc(): Int = example(0)(0).variable
}
错误:值变量不是 T
的成员我不明白为什么会出现此错误,即使我使用了分类标签。
ClassTag
没问题。但是你声明 testing
为 any class 工作,而不仅仅是 IntStorage
。如果我调用 new testing[String]()
怎么办? String
是一个完全有效的 class,带有 class 标签,但它没有 variable
字段。我可以用任何 class.
你的意思可能是
class testing[T <: IntStorage : ClassTag] { ... }