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

Scala案例类复制方法的区别在于2.9和2.10之间

发布时间:2020-12-16 18:43:30 所属栏目:安全 来源:网络整理
导读:以下代码在 Scala 2.9.1中编译: scala case class Foo(a: String)(val b: Int = 1)defined class Fooscala val foo = Foo("some")(2)foo: Foo = Foo(some)scala foo.copy("another")()res1: Foo = Foo(another) 但是在2.10.3中我们得到以下错误: scala foo
以下代码在 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(“另一个”)之外,我还想知道是否有一些聪明的方法可以做到这一点(foo.b)

解决方法

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

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

(编辑:李大同)

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

    推荐文章
      热点阅读