gpt4 book ai didi

scala - 在解释器中蒸发 Predef.any2stringadd

转载 作者:行者123 更新时间:2023-12-04 21:46:22 25 4
gpt4 key购买 nike

我在使用 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/解释器环境中失败了。
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 中的字符串插值会使其变得多余。)

关于scala - 在解释器中蒸发 Predef.any2stringadd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13782406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com