Scala方法推断泛型类型

Scala方法推断泛型类型,scala,generics,Scala,Generics,因此,我有一个简单的Scala特性,它带有一个需要指定类型参数的方法 DAO类扩展了trait并使用trait的方法。即使我没有为方法提供具体类型,代码仍然可以编译,我想这是通过Scala自动推断泛型类型(猜测类型值应该是什么)实现的?是这样吗 在这种情况下,Scala通常是如何推断类型的 非常感谢 class DAO @Inject()(val configProvider: DatabaseConfigProvider) extends ManagementAppDatabase

因此,我有一个简单的Scala特性,它带有一个需要指定类型参数的方法

DAO类扩展了trait并使用trait的方法。即使我没有为方法提供具体类型,代码仍然可以编译,我想这是通过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)
}

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

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

 def execute[Int](dBIO:DBIO[Int]): Future[Int] = configProvider.get[JdbcProfile].db.run(dBIO)

我懂了!谢谢