scala – 翻译中的Vapourise Predef.any2stringadd
发布时间:2020-12-16 18:30:05 所属栏目:安全 来源:网络整理
导读:我遇到了Predef.any2stringadd的问题,遗憾的是它是 officially considered not a PITA.我改变了我的API trait Foo { def +(that: Foo): Foo} 类型类方法 object Foo { implicit def fooOps(f: Foo): Ops = new Ops(f) final class Ops(f: Foo) { def +(that:
我遇到了Predef.any2stringadd的问题,遗憾的是它是
officially considered not a PITA.我改变了我的API
trait Foo { def +(that: Foo): Foo } 类型类方法 object Foo { implicit def fooOps(f: Foo): Ops = new Ops(f) final class Ops(f: Foo) { def +(that: Foo): Foo = ??? } } trait Foo 现在我可以在编译代码中隐藏这个可怕的方法,如下所示: import Predef.{any2stringadd => _} 但是,这在我的REPL / interpreter环境中失败了. val in = new IMain(settings,out) in.addImports("Predef.{any2stringadd => _}") // has no effect? 我怎么能告诉翻译人员这个烦人的方法呢? 解决方法
解决方法似乎是将隐式转换从Foo的伴随对象中取出,并将其置于顶层(我的实例中的包对象):
object Foo { // implicit def fooOps(f: Foo): Ops = new Ops(f) final class Ops(f: Foo) { def +(that: Foo): Foo = ??? } } trait Foo implicit def fooOps(f: Foo): Foo.Ops = new Foo.Ops(f) 虽然我不知道为什么会有任何不同,但似乎它足以使解释器忘记any2stringadd. (尽管如此,我认为应该打开一张新票,试图删除该方法,同时考虑到Scala 2.10中的字符串插值会使它更加多余.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |