2017-04-12 2 views
0

그래서 형식 매개 변수를 지정해야하는 메서드를 사용하여이 간단한 스칼라 특성을 갖게되었습니다.스칼라 메서드 유추 된 제네릭 형식

DAO 클래스는 특성을 확장하고 특성의 메서드를 사용합니다. 이 메서드에 구체적인 형식을 제공하지 않더라도 코드는 여전히 컴파일되며이 형식은 스칼라가 제네릭 형식을 자동으로 추측하여 (유형 값이 무엇인지 추측하여) 달성되는 것으로 가정합니다. 맞아?

또한 스칼라 추론은 일반적으로 이런 상황에서 어떻게 유추합니까?

감사합니다. 당신이 유형 DBIO[Int]에게, 컴파일러를 통과한다면

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

:

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) 
} 

답변

0

그것은 추측이 아니다는 메서드에 전달 된 객체로이 경우 유형을 추론 할 수 컴파일러는 정의 된 유형이 나머지를 채울 수 있습니다 :

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

나는 본다! 감사 ! –

관련 문제