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)
}
你想在这里实现什么目标?
我希望能够有这样一个案例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)
}
你想在这里实现什么目标?