gpt4 book ai didi

scala - 为什么我不能在光滑的查询中使用选项

转载 作者:行者123 更新时间:2023-12-04 11:06:05 25 4
gpt4 key购买 nike

为了避免我不得不创建这么多方法,我尝试将 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 .

关于scala - 为什么我不能在光滑的查询中使用选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24514913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com