Scala:隐式参数应为;没有前缀“;?
据报道,它说 有资格传递给隐式参数的实际参数分为两类:Scala:隐式参数应为;没有前缀“;?,scala,Scala,据报道,它说 有资格传递给隐式参数的实际参数分为两类: 首先,符合条件的是所有标识符x,它们可以在方法调用点访问,而无需前缀,并且表示隐式定义或隐式参数 让我困惑的是,“没有前缀”的含义是什么 implicit val i = "hello" //> i : String = hello object Inner { implicit val j = "goodbye" } def foo(implicit
- 首先,符合条件的是所有标识符x,它们可以在方法调用点访问,而无需前缀,并且表示隐式定义或隐式参数
implicit val i = "hello" //> i : String = hello
object Inner {
implicit val j = "goodbye"
}
def foo(implicit s: String) = println(s)
foo("explicit") //> explicit
foo(Inner.j) //> goodbye
foo //> hello
i
在调用foo()
时可见,因此可以将其视为隐式参数j
是internal
对象的成员,因此没有前缀就无法访问,即internal.j
,因此只能显式传递。要访问不带前缀的j
,使其符合隐式参数的条件,我们必须导入它:
object Inner {
implicit val j = "goodbye"
}
def foo(implicit s: String) = println(s)
import Inner._
foo //> goodbye
没有前缀意味着变量可以直接在上下文中找到?