(斯卡拉初学者问题)
我正在尝试在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"))
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用泛型来概括它时:
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"))
Run Code Online (Sandbox Code Playgroud)
我在两个新语句上遇到编译错误,声称T不是一个类型.我相信这是由类型擦除引起的,但我还没有找到一种解决方法.有办法做我想做的事吗?