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

时间:2016-12-22 19:41:27

标签: slick

我有下一个过滤器

type DatabaseID = Long   

val filter = moderators.filter(m =>
          (m.created < before) &&
          (m.userType inSet userTypeList) &&
          (if(true) m.mcID === mcIDFilter else true)
        )

其中m.mcIDRep[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])
    )

但没有成功。

1 个答案:

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