2016-12-22 7 views
1

У меня есть следующий фильтрНевозможно выполнить вариант отображенных операций с типом: (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]] типа и mcIDFilterOption[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

Хорошо, я нашел, как скомпилировать это. Это уродливо, но работа.

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

 Смежные вопросы

  • Нет связанных вопросов^_^