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