定义 ADT 时案例对象 T 和案例类 T() 之间的区别?

2024-04-01

假设在 scala 中我有一个 ADT,如下所示:

sealed trait Animal

object Animal {
case class Lion(name: String)    extends Animal
case class Elephant(name:String) extends Animal
case object Tiger                extends Animal
}

在这里,最好声明Tiger作为案例对象还是应该将其声明为空案例类,即case class Tiger()?一个人比另一个人有什么优势吗?


如果有唯一的Tiger它应该是一个对象。如果可以有多个相等的Tiger它应该是一个类。

val tiger = Tiger()
val tiger1 = Tiger()
tiger == tiger1 // true
tiger eq tiger1 // false
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

定义 ADT 时案例对象 T 和案例类 T() 之间的区别? 的相关文章

  • 无法在 SBT 中运行 Apache Spark 相关单元测试 - NoClassDefFoundError

    我有一个简单的单元测试 使用SparkContext 我可以在 IntelliJ Idea 中运行单元测试 没有任何问题 但是 当尝试从 SBT shell 运行相同的测试时 我收到以下错误 java lang NoClassDefFoun
  • 在scala / play框架中构建Json文件

    我正在使用 Play 框架和 Scala 我需要提供一个如下所示的输入 id node37 name 3 7 data children 如何使用 json 获取该格式 以下是 Play 框架网站上的示例 val JsonObject Js
  • Haskell scala 互操作性

    我是 Scala 初学者 来自面向对象范式 在了解 Scala 的函数式编程部分时 我被引导到 Haskell 纯函数式编程语言 探索 SO 问题答案 我发现 Java Haskell 具有互操作性 我很想知道 Scala Haskell
  • Spark日期格式问题

    我在火花日期格式中观察到奇怪的行为 实际上我需要转换日期yy to yyyy 日期转换后 日期应为 20yy 我尝试过如下 2040年后失败 import org apache spark sql functions val df Seq
  • 减少/折叠幺半群列表,但减少器返回任一

    我发现自己遇到过几次这样的情况 我有一个减速器 组合 fn 如下所示 def combiner a String b String Either String String a b asRight String 它是一个虚拟实现 但 fn
  • 如何在 Apache Spark 中通过 DStream 使用特征提取

    我有通过 DStream 从 Kafka 到达的数据 我想进行特征提取以获得一些关键词 我不想等待所有数据的到达 因为它是可能永远不会结束的连续流 所以我希望以块的形式执行提取 如果准确性会受到一点影响 对我来说并不重要 到目前为止 我整理
  • Scala:如何将可变参数指定为类型?

    代替 def foo configuration String String 我希望能够写 type Configuration String String def foo configuration Configuration 主要用例是
  • Akka Stream Graph 恢复问题

    我创建了一个图表来并行化具有相同输入的两个流 这些流产生 Future Option Entity 如果 flowA 失败 我想返回 Future None 但恢复似乎没有被调用 val graph Flow Input Future Op
  • HashPartitioner 是如何工作的?

    我阅读了文档HashPartitioner http spark apache org docs 1 3 1 api java index html org apache spark HashPartitioner html 不幸的是 除了
  • 高效序列化案例类

    对于我正在工作的图书馆 我需要提供一个高效 便捷 typesafe序列化 scala 类的方法 理想的情况是用户可以创建一个案例类 并且只要所有成员都是可序列化的 它似乎也应该如此 我准确地知道序列化和反序列化阶段的类型 因此不需要 也不能
  • Play框架:单属性案例类的JSON读取

    我正在尝试为包含单个属性的案例类创建隐式 JSON Reads 但收到错误 Reads Nothing 不符合预期类型 这是代码 import play api libs functional syntax import play api
  • Scala:什么是 CompactBuffer?

    我试图弄清楚 CompactBuffer 的含义 和迭代器一样吗 请解释其中的差异 根据 Spark 的文档 它是 ArrayBuffer 的替代方案 可以提供更好的性能 因为它分配的内存更少 以下是 CompactBuffer 类文档的摘
  • 如何在超时的情况下在单独的调度程序上运行 Akka Streams 图?

    这个问题是基于我做过的一个宠物项目 这个SO https stackoverflow com questions 34641861 akka http blocking in a future blocks the server 34645
  • 将 IndexToString 应用于 Spark 中的特征向量

    Context 我有一个数据框 其中所有分类值都已使用 StringIndexer 进行索引 val categoricalColumns df schema collect case StructField name StringType
  • 在scala 2.13中,为什么有时无法显式调用类型类?

    这是 Shapeless 2 3 3 中的一个简单示例 val book author gt gt Benjamin Pierce title gt gt Types and Programming Languages id gt gt 2
  • 为什么自类型类可以声明类

    我知道 Scala 只能混合特征 这对于依赖注入和蛋糕模式是有意义的 我的问题是为什么我仍然可以声明一个需要另一个 类 但不需要特征的类 Code class C class D self C gt 这仍然编译成功 我认为它应该编译失败 因
  • 外部类与单例类

    假设我们使用 extern 关键字有一些外部链接 我有 在class1 cpp中 MyClass myClassVar NULL 构造函数初始化上述内容 析构函数删除 然后在class2 cpp和class3 cpp中有 extern My
  • 如何将 Java 地图转换为在 Scala 中使用?

    我正在开发一个 Scala 程序 该程序调用 Java 库中的函数 处理结果并生成 CSV 有问题的 Java 函数如下所示 Map
  • Java中单例的其他方式[重复]

    这个问题在这里已经有答案了 只是我在考虑编写单例类的其他方法 那么这个类是否被认为是单例类呢 public class MyClass static Myclass myclass static myclass new MyClass pr
  • Spark scala 模拟 Spark.implicits 用于单元测试

    当尝试使用 Spark 和 Scala 简化单元测试时 我使用 scala test 和mockito scala 以及mockito Sugar 这只是让你做这样的事情 val sparkSessionMock mock SparkSes

随机推荐

  • YouTube API - 按发布日期查询

    我正在编写一个网络应用程序 它使用 YouTube 代码 API 来执行特定类型的搜索 在本例中 我尝试搜索与查询匹配且在两个日期之间上传的所有视频 这个文件 http code google com apis youtube 2 0 de
  • 在Python中将文件更改为只读模式

    我正在编写一个数据处理代码 在其中创建一个新文件 将处理后的数据写入该文件并关闭 但该文件必须以只读模式关闭 以免被意外修改 这可以用 Python 完成吗 为此 您使用os chmod https docs python org 2 li
  • 有 Groovy 的源代码格式化程序吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我在 Java 项目中使用 Jalopy 的商业版本 但它不适用于 Groovy 文件 Intelli
  • 处置 SqlCommand

    Because SqlCommand实施IDisposable 我通常会按如下方式处理 ADO 查询 using SqlConnection connection new SqlConnection connectionString usi
  • 测试 Javascript 中未定义的嵌套对象[重复]

    这个问题在这里已经有答案了 可能的重复 javascript测试嵌套对象键是否存在 https stackoverflow com questions 2631001 javascript test for existence of nes
  • GruntJs 'grunt' cmd 打开 Visual Studio?

    我已经能够使用GruntJs https github com cowboy grunt在几个零问题的个人项目上 我决定在我的工作项目中使用它 I run grunt init gruntfile这样就可以创建 gruntfile 和 pa
  • oracle 11G中自动删除最旧的分区

    如果分区超过三个月 我需要从间隔分区表中删除分区 是否有 Oracle 实用程序 函数可以执行此操作 或者如果没有 如何实现 请指导我 Database version Oracle 11G 我不知道有任何 Oracle 实用程序或函数可以
  • 索引有不同的表空间有什么逻辑原因吗?

    您好 有人可以告诉我为什么我们为索引和数据创建不同的表空间吗 人们普遍认为 将索引和表保存在单独的表空间中可以提高性能 现在 许多受人尊敬的专家认为这是一个神话 参见这个 问汤姆 主题 搜索 神话 https asktom oracle c
  • J2ME中的GUI设计

    我最近一直在研究移动编程 我实际上尝试了J2ME 抛光 GUI 框架 http www j2mepolish org 虽然用 Polish 制作的 GUI 看起来相当不错 但我意识到用户界面并不是我想要的 我开始在网络上搜索 Stack O
  • WPF 在选择时更改 ListboxItem 突出显示颜色

    我在设置时遇到问题HighlightBrushKey of a SelectedItem of a Listbox在 WPF 中 我的目的是根据代码中给定的布尔值设置项目的颜色 我尝试了以下步骤 实现转换器 检查布尔值并返回正确的颜色 例子
  • openssl 1.1.0 中替代 AES_ctr128_encrypt 的确切替代 API 是什么?

    我需要在 CTR 模式下使用 128 位 AES 算法来从 openssl 库进行加密 但似乎相应的函数AES ctr128 encrypt已从openssl 1 1 0g中删除 因为我收到以下错误 Documentation or ref
  • Html:无需控件即可播放音频?

    当用户单击图像时 我需要播放 mp3 音频文件 我只想播放音频 即不应该有控件 小部件等 浏览器也不应该启动外部应用程序 编辑 好的 我也许可以尝试一下 flash 有推荐的轻量级Flash播放器吗 现在有办法做到这一点 把这个
  • 更改Delphi中单元的初始化顺序

    我正在使用 Delphi XE7 开发 Windows 32 位应用程序 我的应用程序包含许多单元 其中有一个初始化部分 我需要首先初始化一个特定的初始化部分 可以设置优先级吗 我尝试在 dpr 文件中写入初始化部分 但编译器拒绝了这一点
  • Backbone - 从 API 获取 JSON 数据

    这几天我在玩Backbone 我想从 Twitter 搜索 API 接收一些数据 但我真的不明白它是如何工作的 这是我的代码 function Tweet Backbone Model extend Tweets Backbone Coll
  • 调用 .next() 方法时扫描仪出现 NoSuchElementException

    在 Java 中 我收到此异常 Exception in thread main java util NoSuchElementException at java util Scanner throwFor Unknown Source a
  • pthread_mutex_t VS @synchronized 块?

    static pthread mutex t gLock global pthread mutex init gLock NULL in init pthread mutex lock gLock for int i 0 i lt mess
  • FileNotFoundError 但文件存在

    我正在创建一个导入许多 JSON 文件的 Python 应用程序 这些文件与 python 脚本位置位于同一文件夹中 在我将整个文件夹移到其他地方之前 文件已完美导入 由于脚本会在不存在文件的情况下创建一个文件 因此它会继续在主目录中创建该
  • 在 Windows 上针对 Mac/Linux 进行编译

    显然 您无法真正在 Windows 上运行 Mac 或 Linux 应用程序 但是您可以使用 MSVC 为这些平台编译二进制文件吗 显然要插入额外的编译器和工具 对于一个严肃的构建系统 您不希望每个平台都有一个构建服务器 因此拥有一个为所有
  • 在表创建脚本中显式指定排序规则有哪些优点和缺点?

    创建表时 COLLATE 子句是可选的 所以 在 CREATE TABLE T1 F1 varchar 50 COLLATE SQL Latin1 General CP1 CS AS NOT NULL F2 varchar 50 NOT N
  • 定义 ADT 时案例对象 T 和案例类 T() 之间的区别?

    假设在 scala 中我有一个 ADT 如下所示 sealed trait Animal object Animal case class Lion name String extends Animal case class Elephan