无法使用以下类型执行选项映射操作:(Boolean, _57) => R

Cannot perform option-mapped operation with type: (Boolean, _57) => R

我有下一个过滤器

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

但没有成功。

好的,我找到了如何编译它。这很丑,但工作。

val filter = moderators.filter(m =>
      (m.created < before) &&
      (m.userType inSet userTypeList) &&
      (if(true) m.mcID === mcIDFilter else Some(true):Rep[Option[Boolean]])
    )