그래서 저는 지정된 타입 매개 변수를 요구하는 메소드를 가진이 간단한 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)
}
추측이 아닙니다.이 경우 컴파일러는 메서드에 전달 된 객체에 정의 된 유형이 있으므로 유형을 추론 할 수 있습니다.
def execute[T](dBIO:DBIO[T]): Future[T] = configProvider.get[JdbcProfile].db.run(dBIO)
따라서 type을 전달 DBIO[Int]
하면 컴파일러가 나머지를 채울 수 있습니다.
def execute[Int](dBIO:DBIO[Int]): Future[Int] = configProvider.get[JdbcProfile].db.run(dBIO)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다