加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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中的字符串插值会使它更加多余.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读