Scala函数调用中的隐式函数

Scala函数调用中的隐式函数,scala,implicit,Scala,Implicit,我定义了一个类,该类中有一个方法,该方法试图利用一个包含隐式参数的函数。不幸的是,它无法编译 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 n

我定义了一个类,该类中有一个方法,该方法试图利用一个包含隐式参数的函数。不幸的是,它无法编译

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,并在运行时确定是应该运行重载版本还是调用父实现。如果这是不可能的,我想我可以让类采用隐式

getAnswer
调用
useImplicit
,但是
测试范围内没有
隐式布尔
getAnswer
还需要
隐式
参数才能工作:

def getAnswer(implicit a: Boolean) = if(useImplicit) println("yes") else println("no")

另一种选择是让
Test
在实例化时要求
隐式

最终的问题是我试图在运行时重写函数。我无法将参数添加到getAnswer方法中,因为它会更改方法签名,因此不会由调用代码执行。我刚刚意识到,在创建对象时,我需要在运行时使用一个trait并将其混合在一起。