У меня определены следующие неявные преобразования, которые помогают мне переносить некоторый код Javascript в Scala:
case class NullableBoolean(value: Boolean)
implicit def toNullable(boolean: Boolean) = NullableBoolean(boolean)
implicit def toBoolean(boolean: NullableBoolean) = boolean != null && boolean.value
Код используется следующим образом:
class SomeClass {
var x: NullableBoolean = _
def set(v: Boolean): Unit = {
x = v
}
def someOtherFunction(): Unit = {
if (x) println("Yes")
else print("No")
}
}
val some = new SomeClass
some.someOtherFunction()
some.set(true)
some.someOtherFunction()
При использовании вмаленький образец все работает отлично.Однако при использовании в реальном проекте я получаю сообщение об ошибке:
Ошибка: (360, 16) несоответствие типов;
найдено: xxx.NullableBoolean
обязательно:Boolean
if (this.someValue) {
Я подозреваю, что это из-за какого-то другого неявного импортированного преобразования, которое делает преобразование неоднозначным, но я не могу его найти.Есть ли какой-либо метод или инструмент, который показал бы мне приемлемые конверсии или иным образом помог бы мне определить двусмысленность?Я пробовал IntelliJ Shift-Ctrl-Q, но он показывает мне только мое преобразование в Boolean и некоторые преобразования в String, что выглядит хорошо.