据我从scala网站了解到,我正在练习使用隐式参数:
符合条件的所有标识符 x 都可以在方法调用点访问而无需前缀,并且表示隐式定义或隐式参数。
所以我写了以下代码:
class Env(str: String) {
override def toString = str
}
object ImplicitUser {
def apply(implicit env: Env) {
println(env.toString)
}
}
object Run {
def apply() {
implicit val myEnv = new Env("abc")
ImplicitUser() // compiler error
}
}
这个错误让我很困惑:
myEnv
可以访问,没有前缀myEnv
是一个隐含值
那么为什么编译器不自动填充myEnv
呢ImplicitUser.apply
?