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