簡體   English   中英

Scala方法推斷通用類型

[英]Scala method Inferred generic type

所以我有一個簡單的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)

因此,如果您傳遞類型DBIO[Int] ,則編譯器可以填寫其余部分:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM