小编Ant*_*ent的帖子

如何创建基于泛型类型返回对象的通用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"))
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不是一个类型.我相信这是由类型擦除引起的,但我还没有找到一种解决方法.有办法做我想做的事吗?

generics scala type-parameter

7
推荐指数
1
解决办法
327
查看次数

标签 统计

generics ×1

scala ×1

type-parameter ×1