我有下一个过滤器
type DatabaseID = Long
val filter = moderators.filter(m =>
(m.created < before) &&
(m.userType inSet userTypeList) &&
(if(true) m.mcID === mcIDFilter else true)
)
其中m.mcID
有Rep[Option[models.DatabaseID]]
类型和mcIDFilter
Option[models.DatabaseID]
。
为什么我会收到下一个错误?
Cannot perform option-mapped operation
with type: (Boolean, _57) => R
for base type: (Boolean, Boolean) => Boolean
_57
?它是什么?
为简单起见,我已将条件替换为true
。如果我删除包含条件的行或仅用m.mcID === mcIDFilter
替换true
,则代码编译正常。
此外,如果我删除if
语句,它编译时没有错误:
val filter = moderators.filter(m =>
(m.created < before) &&
(m.userType inSet userTypeList) &&
m.mcID === mcIDFilter
)
我发现当第一类操作数的类型不同时会出现此错误。
我也试过
val filter = moderators.filter(m =>
(m.created < before) &&
(m.userType inSet userTypeList) &&
(if(true) m.mcID === mcIDFilter else true:Rep[Boolean])
)
但没有成功。
答案 0 :(得分:0)
好的,我发现如何编译这个。这很难看,但是工作。
val filter = moderators.filter(m =>
(m.created < before) &&
(m.userType inSet userTypeList) &&
(if(true) m.mcID === mcIDFilter else Some(true):Rep[Option[Boolean]])
)