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.否则它们的用途有限,因为它们不参与模式匹配或(如您所见)复制操作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容