我在谷歌搜索找到a case class和a 之间的差异class.每个人都提到当你想在类上进行模式匹配时,使用用例类.否则使用类并提及一些额外的额外津贴,如equals和hash code overriding.但这些是为什么应该使用案例类而不是类的唯一原因?
我想在Scala中这个功能应该有一些非常重要的原因.有什么解释或者是否有资源可以从中了解有关Scala案例类的更多信息?
是否需要一个类的伴随对象(单例)?为什么我要创建一个类,比如说Foo并为它创建一个伴随对象?
在我最近关于在Scala中使用或省略"new"关键字(Scala中的"new"关键字)的帖子中,我被告知遗漏来自于某些类具有使用apply方法定义的伴随对象的事实.我的问题是:我们能够告诉或者是否有任何一般规则来区分哪些类/对象具有伴随对象和应用方法?
在此先感谢并抱歉这是一个愚蠢的问题,但是从Java背景来看,它有点令人困惑.
可能重复:
Scala中的"new"关键字
我注意到在Scala中创建某些实例你可以不使用new.什么时候需要开发人员使用new?为什么有些物品会让你错过使用它?
谢谢
List("this","is","a","list")创建这四个字符串的List; 没有新的要求
Map("foo" - > 45,"bar" - > 76)创建一个String to Int的Map,没有新的必需而且没有笨拙的助手类.
从这里采取..
当我使用时ArrayBuffer,我应该使用:
val arr = new ArrayBuffer[Int]
Run Code Online (Sandbox Code Playgroud)
但是当我使用时Map,我应该使用:
val map = Map[Int, Int]()
Run Code Online (Sandbox Code Playgroud) 在Scala中进行一些函数式编程,并且来自Java背景,我倾向于抛出这样的异常:
throw new MyException("something is wrong")
Run Code Online (Sandbox Code Playgroud)
但是,我也看到人们省略new:
throw MyException("something is wrong")
Run Code Online (Sandbox Code Playgroud)
哪个更惯用?
scala ×6
new-operator ×2
apply ×1
arraybuffer ×1
case-class ×1
collections ×1
dictionary ×1
oop ×1