scala - 何时使用类 vs 对象 vs 案例类 vs 特征

标签 scala

这是我目前所理解的。

当我们需要实例化对象时应该使用类

只有当我们有一个单一的需求意味着不需要多个“对象”实例时,我们才使用“对象”。我在想,当我们在项目中构建公共(public)库函数或实用程序函数时,我们可以使用“对象”,每次我们在该对象中使用方法/函数时都需要实例化。

当我们想要保存样板代码时,可以使用案例类。假设我们有“Stock”类。一般来说,每只股票都有数百个成员变量。如果我们使用案例类,而不是开发人员为 setter 和 getter 编写代码,它会生成许多默认代码。

特点:不知道什么时候用。 Traits 和 Objects 在初始化期间都不带参数。

任何更多的想法和想法请分享。

最佳答案

在 Scala 中,类的行为也与任何其他 OO 语言(例如 Java)中的行为一样 - 也就是说,您使用类在应用程序中构建对象(不是 Scala 对象),这些对象具有状态(例如,持有属性,比如一个人的名字) .
Scala 对象是单例。你在 Scala 中使用它主要是为了

  • 创建不需要状态/属于特定对象的函数/工件。在其他 OO 语言中,您为此行为使用 static 关键字。
  • 提供工厂方法(尤其是通过 apply 方法)来实例化类(参见 Scala 伴随对象)

  • 案例类旨在用作轻量级类(例如数据容器)。默认情况下它们是不可变的,并且应该在结构上进行比较(即通过比较值/状态)而不是通过引用。
    此外,它们还提供开箱即用的序列化等功能。
    Traits 就像 Java 中的接口(interface),具有更多特性。它们定义了类/对象的接口(interface)。
    在开始深入了解 Scala 之前,我建议先熟悉经典的 OO 原则。

    关于scala - 何时使用类 vs 对象 vs 案例类 vs 特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43171730/

    相关文章:

    scala - 如何获取 RDD 的子集?

    scala - Spray-json 用于 List 上的普通类(非大小写)

    java - 如何修改 JAR 中包含的文件(该文件是 IntelliJ 中的依赖项)

    scala - 如何阻止 Intellij 创建 src/main/java 和 src/main/scala-x 文件夹?

    java - java中的临时目录被覆盖

    scala:定义特征并引用相应的伴生对象

    另一个 Option 对象内的 Scala Option 对象

    scala - 如何将 Spark 中的分类变量转换为一组编码为 {0,1} 的列?

    scala - 如何在保持不变性的同时访问 Scala 中的复杂数据结构?

    arrays - 替代 Scala .make() 数组方法?