(Scala初学者问题)
我正在尝试使用Scala编写一个程序,对C ++源文件进行多项检查,并希望实现可选的检查日志记录。
以下代码适用于单个检查项目:
val headerFiles = files.filter(_.matches(".*?\\.h$"))
val headerGuardChecker = if(options.contains('verbose)) {
new HeaderGuard with LoggingFileCheckerTrait
} else {
new HeaderGuard
}
headerFiles.foreach(h => if (! headerGuardChecker.check(new File(h))) println(h + " doesn't have a header guard"))
然而,当我尝试使用泛型来概括这个问题时:
def checker[T] = if(options.contains('verbose)) {
new T with LoggingFileCheckerTrait
} else {
new T
}
val headerFiles = files.filter(_.matches(".*?\\.h$"))
headerFiles.foreach(h => if (! checker[HeaderGuard].check(new File(h))) println(h + " doesn't have a header guard"))
我在两个new语句上遇到了编译错误,报告T不是一种类型。我相信这是由于类型擦除引起的,但我还没有找到解决方法。有没有办法实现我想要的功能?
T
。你怎么做到的?或者这是否可能? - Luigi Plinge