Scala方法推断泛型类型

时间:2017-04-12 23:37:29

标签: scala generics

所以我有一个简单的Scala特性,其方法需要指定一个类型参数。

DAO类扩展了特征并使用了特征的方法。即使我没有为方法提供具体类型,代码仍然编译,我想这是通过Scala自动推断泛型类型(猜测类型值应该是什么)来实现的?是不是?

此外,Scala在一般情况下如何推断类型?

非常感谢!!

class DAO @Inject()(val configProvider: DatabaseConfigProvider) extends 
    ManagementAppDatabase {
    private val users = TableQuery[UserTable]

  def findUserByEmail(email: String): Future[Option[User]] = {
    execute(users.filter(_.email === email).result.headOption)
  }
}

trait ManagementAppDatabase {
  val configProvider: DatabaseConfigProvider
 def execute[T](dBIO:DBIO[T]): Future[T] = configProvider.get[JdbcProfile].db.run(dBIO)
}

1 个答案:

答案 0 :(得分:0)

这不是猜测,编译器可以在这种情况下推断出类型,因为传递给方法的对象具有定义的类型:

127.0.0.1:25303

因此,如果传递类型 def execute[T](dBIO:DBIO[T]): Future[T] = configProvider.get[JdbcProfile].db.run(dBIO) ,编译器可以填写其余部分:

DBIO[Int]