Scala函数调用中的隐式函数

时间:2014-12-03 23:23:06

标签: 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 no = false
}

问题是,当我去编译类试图测试它时,我得到了错误

could not find implicit value for parameter a: Boolean
   def getAnswer() = if (useImplicit) println("yes") else println("no")

我不确定这里发生了什么。我尝试这种方式的原因是我最终想要重载hashCode并在运行时确定是否应该运行我的重载版本或调用父实现。如果这是不可能的,我想我可以让这个课采取隐含的

1 个答案:

答案 0 :(得分:1)

getAnswer正在调用useImplicit,但implicit Boolean范围内没有TestgetAnswer还需要implicit参数才能运行:

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

另一种方法是让Test在实例化时需要implicit,正如您所说。