我已经定义了一个类中有一个方法,它试图利用一个带有隐式参数的函数。不幸的是,它无法编译
class Test {
def useImplicit(implicit a: Boolean) = a
def getAnswer() = if (useImplicit) println("yes") else println("no")
}
object Preferences {
implicit val yes = false
implicit val no = false
}
问题是,当我去编译类试图测试它时,我得到了错误
could not find implicit value for parameter a: Boolean
def getAnswer() = if (useImplicit) println("yes") else println("no")
我不确定这里发生了什么。我尝试这种方式的原因是我最终想要重载hashCode并在运行时确定是否应该运行我的重载版本或调用父实现。如果这是不可能的,我想我可以让这个课采取隐含的
答案 0 :(得分:1)
getAnswer
正在调用useImplicit
,但implicit Boolean
范围内没有Test
。 getAnswer
还需要implicit
参数才能运行:
def getAnswer(implicit a: Boolean) = if(useImplicit) println("yes") else println("no")
另一种方法是让Test
在实例化时需要implicit
,正如您所说。