gpt4 book ai didi

Scala 案例类复制方法在 2.9 和 2.10 之间的差异

转载 作者:行者123 更新时间:2023-12-04 15:34:36 24 4
gpt4 key购买 nike

以下代码在 Scala 2.9.1 中编译:

scala> case class Foo(a: String)(val b: Int = 1)
defined class Foo

scala> val foo = Foo("some")(2)
foo: Foo = Foo(some)

scala> foo.copy("another")()
res1: Foo = Foo(another)

但在 2.10.3 中,我们收到以下错误:
scala> foo.copy("another")()
<console>:11: error: not enough arguments for method copy: (b: Int)Foo.
Unspecified value parameter b.
foo.copy("another")()

有人可以解释为什么会改变吗?而且我还想知道是否有一些聪明的方法可以做到这一点,除了 foo.copy("another")(foo.b)

最佳答案

不幸的是,这是设计使然:https://issues.scala-lang.org/browse/SI-6068

像这样的 case 类上的辅助参数块通常仅用于隐式。它们的用途有限,因为它们不参与模式匹配或(如您所见)复制操作。

关于Scala 案例类复制方法在 2.9 和 2.10 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20904207/

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