【问题标题】:Scala implicit logic for companion objects伴随对象的 Scala 隐式逻辑
【发布时间】:2014-10-24 16:53:18
【问题描述】:
object Test extends App {

  def print(s: String)(implicit p: Prefixer) = {
    println(p.prefix + s)
  }

  print("test")

}

case class Prefixer(prefix: String)

object Prefixer {
  implicit val p = Prefixer("***")
}

上述代码无法编译,因为编译器无法找到 Prefixer 的隐式值。但是,如果我将案例类 Prefixer 和伴随对象放在另一个文件中,它就可以工作。这是为什么呢?

【问题讨论】:

标签: scala implicit companion-object


【解决方案1】:

这与声明的顺序有关。 如果您只是将 Prefixer 及其伴侣移动到主对象上方,它也可以工作。 当类在另一个文件中时,编译器可以先扫描该文件,然后再找到实现应用程序的文件。

【讨论】:

  • 最好的解决方案是给你的隐式 val 一个显式类型,不过。不建议在没有类型的情况下声明隐式。
  • @sjrd 为什么不推荐?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-24
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
  • 2018-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多