将现有变量标记为隐式方法的候选者

Mark existing variable as candiate for implicit method

我尝试编写一个方法,该方法应该使用来自周围范围的变量。问题是我无法访问定义变量的代码部分。像这样:

object Example extends App {

  val myvar = 1.0 // cannot change that code

  def myMethod()(implicit value:Double) = {
      print(value)
  }

  myMethod()
}

这失败了,因为 myMethod 找不到适合 value 的隐式。

除了定义指向 value 的新隐式变量外,还有什么方法可以在 "mark" value 定义后将其作为隐式变量?

背景:我们使用自动创建 SparkContext(名为 sc)的 Spark-Notebook。由于 sc 是社区中此变量的众所周知的名称,我们不想引入另一个变量名称。

如果您只是不想拥有未标记为 scSparkContext 实例,您可以将其分配给隐式下划线变量,如下所示:

implicit val _: SparkContext = sc

这会在作用域内创建一个正确类型的隐式变量供您的函数使用。


或者,您始终可以显式传递隐式变量,在上面的示例中,您可以这样做

myMethod()(myvar)

这就是我要使用的解决方案。