Scala:如何使 toString() 接受隐式参数?

Scala: How to make toString() take an implicit parameter?

我希望能够有这样一个案例class:

case class TxtFrag(start:Int, end:Int){
  override def toString()(implicit src:String) = src.substring(start, end)
}

这样我就可以做这样的事情了:

implicit val sourceText = "FooBar"
println(TxtFrag(0, 3)) // should print "Foo"

但是,可以理解的是,编译器抱怨我的 toString 函数没有覆盖任何东西。是否有任何聪明的解决方法来完成这项工作,而不会使 TxtFrag 变得更重?

没有。您可以将隐式参数放在 class 本身上吗?例如

case class TxtFrag(start:Int, end:Int)(implicit src:String) {
   override def toString() = src.substring(start, end)
}

你想在这里实现什么目标?