問題

非常に多くのメソッドを作成しなければならないことを保存するために、Optionをメソッドに渡して、Optionが定義されているかどうかをチェックしようとしました。

 def getUsers(locationId: Option[Int], companyId: Int, salary: Option[Int]): List[User] = {
  val query = for {
    u <- users if u.companyId === companyId && (locationId.isDefined && u.locationId === locationId.get) && (salary.isDefined && u.salary >= salary.get)

  }
  query.list()
}
 

私はエラーを言っている:

 polymorphic expression cannot be instantiated to expected type;

IntelliJ errors are expected Boolean actual Column[Boolean].
 

このタイプの句は滑らかなクエリでは不可能ですか、それとも間違っていますか?

  ベストアンサー

なぜ私はあなたに言うことはできませんが、これは私のためにコンパイルされます:

 def getUsers(locationId: Option[Int], companyId: Int, salary: Option[Int]): List[User] = {
  val query = for {
    u <- users if u.companyId === companyId && locationId.isDefined && u.locationId === locationId.get && salary.isDefined && u.salary >= salary.get
  } yield(u)
  query.list()
}
 

かっこはなく、yield そうでなければ query の戻り値の型は Unit でなければならないことに注意してください。

  同じタグがついた質問を見る

scalaplayframeworkslick