将所有类定义为Scala中的情况,只是让所有参数自动生成属性是否正确?

栏目: Scala · 发布时间: 7年前

内容简介:我正在开始Scala.我是否正确理解我应该将类定义为案例类,如果我想将它作为属性公开的参数?它不引入任何副作用吗?为case类生成的样板代码在字节码中的成本很小但非零.除了copy方法之外,还有hashCode,equals和toString以及伴随对象工厂方法.更重要的是,从案例类派生类是不可取的.从案例类派生案例类确实会引发问题(编译器会对你大喊大叫).特别是,编译器不会生成重写的复制(…)方法,因此如果您尝试复制从案例类派生的案例类,则可以获得一些奇怪的失败模式.

我正在开始Scala.我是否正确理解我应该将类定义为案例类,如果我想将它作为属性公开的参数?它不引入任何副作用吗?

为case类生成的样板代码在字节码中的成本很小但非零.除了copy方法之外,还有hashCode,equals和toString以及伴随对象工厂方法.

更重要的是,从案例类派生类是不可取的.从案例类派生案例类确实会引发问题(编译器会对你大喊大叫).特别是,编译器不会生成重写的复制(…)方法,因此如果您尝试复制从案例类派生的案例类,则可以获得一些奇怪的失败模式.

如果你将你的案例类保留在任何继承图的叶子上,你会没事的.

翻译自:https://stackoverflow.com/questions/3605745/is-it-correct-to-define-all-classes-as-cases-in-scala-just-to-have-all-their-arg


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Programming Python

Programming Python

Mark Lutz / O'Reilly Media / 2006-8-30 / USD 59.99

Already the industry standard for Python users, "Programming Python" from O'Reilly just got even better. This third edition has been updated to reflect current best practices and the abundance of chan......一起来看看 《Programming Python》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码