(вопрос для начинающих по 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"))
Я получаю ошибки компиляции в двух новых операторах, утверждая, что T не тип. Я считаю, что это вызвано стиранием типа, но я не нашел способа обойти это. Есть ли способ сделать то, что я хочу сделать?