case类中的var成员会影响case类的相等性吗?

2023-12-26

我在代码中大量使用了案例类,响应案例类的底层相等定义以确保行为正确。然后现在我发现我需要向案例类添加另一个字段成员。

  1. 所以如果我添加一个var案例类中的字段成员,是否会弄乱案例类的相等属性?
  2. 如果 1 是,那么如果我只改变var字段值一次,之后,在案例类进入任何集合或进行相等比较之前,不会发生任何重新分配,这仍然会扰乱相等行为吗?

案例类相等性仅基于其主要构造函数属性,无论它们是var or val(是的,你可以让它们var通过给出明确的var覆盖隐含的val该案例类构造函数参数拥有。)在 a 的主体中添加属性case class does not影响编译器生成的equals(other: Any) method.

Witness:

package rrs.scribble

object  CCVarEq
{
  case class CC1(i: Int, j: Float, var k: Double)

  case class CC2(i: Int, j: Float, var k: Double) {
    var l = math.Pi
  }

  def show {
    val cc11 = CC1(1, 2.0f, 3.0)
    val cc12 = CC1(1, 2.0f, 3.0)

    val cc21 = CC2(1, 2.0f, 3.0); cc21.l = math.E
    val cc22 = CC2(1, 2.0f, 3.0)

    printf("cc11 == cc12: %s%n", cc11 == cc12); cc12.k = math.Pi * math.E
    printf("cc11 == cc12: %s%n", cc11 == cc12)

    printf("cc21 == cc22: %s%n", cc21 == cc22)
  }
}

在 REPL 中:

scala> import rrs.scribble.CCVarEq._
import rrs.scribble.CCVarEq._

scala> show
cc11 == cc12: true
cc11 == cc12: false
cc21 == cc22: true

jamie 关于并发的所有观点也都是有效的。

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

case类中的var成员会影响case类的相等性吗? 的相关文章

  • Spark:替换嵌套列中的空值

    我想更换所有n a以下数据框中的值unknown 它可以是scalar or complex nested column 如果它是一个StructField column我可以循环遍历列并替换n a using WithColumn 但我希
  • 如何在 Scala 中编写 Pig UDF

    我正在尝试在 Scala 中编写 Pig UDF 使用 Eclipse 我已将 pig jar 添加为 java 构建路径中的库 这似乎解决了以下 2 个导入问题 导入 org apache pig EvalFunc 导入 org apac
  • 如何从spark管道逻辑模型中提取变量权重?

    我目前正在尝试学习 Spark Pipeline Spark 1 6 0 我将数据集 训练和测试 导入为 oas sql DataFrame 对象 执行以下代码后 生成的模型是oas ml tuning CrossValidatorMode
  • 如何设计具有相互依赖的测试的 Specs2 数据库测试?

    有没有一些首选的方法来设计Specs2 http etorreborre github com specs2 测试 有很多测试取决于之前测试的结果 下面 您将找到我当前的测试套件 我不喜欢var位于测试片段之间 不过 它们是 需要的 因为某
  • 在scala / play框架中构建Json文件

    我正在使用 Play 框架和 Scala 我需要提供一个如下所示的输入 id node37 name 3 7 data children 如何使用 json 获取该格式 以下是 Play 框架网站上的示例 val JsonObject Js
  • Spark:出现心跳错误后丢失数据

    我有一个在 Spark 集群上运行的 Python 程序 有四个工作线程 它处理一个包含大约 1500 万条记录的巨大 Oracle 表 检查结果后发现大约有600万条记录没有插入 我的写入功能如下 df write format jdbc
  • 如何以最佳方式传递元组参数?

    如何以最佳方式传递元组参数 Example def foo Int Int def bar a Int b Int 现在我想传递的输出foo to bar 这可以通过以下方式实现 val fooResult foo bar fooResul
  • IntelliJ IDEA 13:新的 Scala SBT 项目尚未生成 src 目录结构

    我按照 Jetbrains 网站上的入门视频设置 IntelliJ IDEA 13 1 Community Edition 以与 Scala 配合使用 Scala 插件 v0 36 431 已安装 当我使用向导创建一个新的 Scala SB
  • 过滤字符串上的 Spark DataFrame 包含

    我在用火花1 3 0 http spark apache org releases spark release 1 3 0 html and 火花阿夫罗1 0 0 https github com databricks spark avro
  • Akka Stream Graph 恢复问题

    我创建了一个图表来并行化具有相同输入的两个流 这些流产生 Future Option Entity 如果 flowA 失败 我想返回 Future None 但恢复似乎没有被调用 val graph Flow Input Future Op
  • Spark SQL 失败,因为“常量池已超过 JVM 限制 0xFFFF”

    我在 EMR 4 6 0 Spark 1 6 1 上运行此代码 val sqlContext SQLContext getOrCreate sc val inputRDD sqlContext read json input try inp
  • 可选择将项目添加到 Scala 映射

    我正在寻找这个问题的惯用解决方案 我正在构建一个valScala 不可变 Map 并希望有选择地添加一项或多项 val aMap Map key1 gt value1 key2 gt value2 if condition key3 gt
  • Play框架:单属性案例类的JSON读取

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

    只是为了让那些想要开始使用 Scala FP 库 在纯 FP 方面变得更好的人快速清晰地了解 有人能澄清猫和猫效应 猫效应 IO 之间的区别 关系吗 最重要的是 齐奥和莫尼克斯对此有何看法 最后 与 ScalaZ 7 8 有何关系 到目前为
  • 具有继承类型的 Aux 模式推理失败

    我有一个复杂的玩具算法 我希望纯粹在类型级别上表示 根据饮食要求选择当天菜肴的修改 对卷积表示歉意 但我认为我们需要每一层才能达到我想要使用的最终界面 我的代码有一个问题 如果我们表达一个类型约束Aux 模式生成的类型基于另一个泛型类型 它
  • 在 Spark 结构化流 2.3.0 中连接两个流时,左外连接不发出空值

    两个流上的左外连接不发出空输出 它只是等待记录添加到另一个流中 使用套接字流来测试这一点 在我们的例子中 我们想要发出具有 null 值的记录 这些记录与 id 不匹配或 且不属于时间范围条件 水印和间隔的详细信息如下 val ds1Map
  • 将 Tuple2 的值部分(即映射)合并为按 Tuple2 的键分组的单个映射

    我在 Scala 和 Spark 中这样做 我有和Dataset of Tuple2 as Dataset String Map String String 下面是值的示例Dataset A 1 gt 100 2 gt 200 3 gt 1
  • Spark 2.2 无法将 df 写入 parquet

    我正在构建一个聚类算法 我需要存储模型以供将来加载 我有一个具有以下架构的数据框 val schema new StructType add StructField uniqueId LongType add StructField tim
  • Scala 使用的 Redis 客户端库建议

    我正在计划使用 Scala 中的 Redis 实例进行一些工作 并正在寻找有关使用哪些客户端库的建议 理想情况下 如果存在一个好的库 我希望有一个为 Scala 而不是 Java 设计的库 但如果现在这是更好的方法 那么仅使用 Java 客
  • 如何将 Java 地图转换为在 Scala 中使用?

    我正在开发一个 Scala 程序 该程序调用 Java 库中的函数 处理结果并生成 CSV 有问题的 Java 函数如下所示 Map

随机推荐

  • 如何使用 Java 获取 XML id 值?

    对于 XML 关键字搜索项目 用户可以搜索 XML 代码中的任意值
  • 添加新数据源对话框期间新连接失败

    问题 如果我安装了 Visual Studio 2010 Service Pack 1 并且转到 数据 添加新数据源 并单击 数据库 则会显示标准的 选择数据连接 向导页面 在该页面上 如果我配置了现有连接 则可以选择它 并将该数据源添加到
  • iOS VIPER架构,谁必须实例化整个模块?

    考虑到VIPER结构 我有两个模块 A 和 B 第一个模块 A 通过演示器想要执行必须在模块 B 中完成的操作 因此告诉其线框执行该操作 问题是 谁负责实例化整个模块 视图 交互器 演示器 我看到了一些采用不同方法的例子 在应用程序的开头创
  • boto3 lambda 调用运行 ECS 任务需要在修订号中进行硬编码吗?

    长话短说 我不想将任务的 ECS 任务定义修订号硬编码到我的 lambda 源代码中 每次我更新任务定义时 本质上都是更新我的源代码 在ECS 的 boto3 文档run task https boto3 amazonaws com v1
  • 如何重命名 Dask Dataframe 的索引

    我将如何重命名 dask 数据帧上的索引 我尝试过像这样 df index name foo 但重新检查 df index name 显示它仍然是以前的样子 这似乎不是一种有效的方法 所以如果有更直接的方法我不会感到惊讶 d index n
  • 在 AWS 中使用 Python 中的 Lambda 将文件写入 S3

    在 AWS 中 我尝试使用 Lambda 函数将文件保存到 Python 中的 S3 虽然这可以在我的本地计算机上运行 但我无法让它在 Lambda 中运行 我一整天都在研究这个问题 非常感谢您的帮助 谢谢 def pdfToTable P
  • 如何在 PHP 中重新索引数组但索引从 1 开始?

    我有以下数组 我想对其重新索引 以便反转键 最好从 1 开始 当前数组 edit 该数组实际上看起来像这样 Array 2 gt Object title gt Section linked gt 1 1 gt Object title g
  • Airflow - Python 文件不在同一个 DAG 文件夹中

    我正在尝试使用 Airflow 来执行一个简单的 python 任务 from future import print function from airflow operators python operator import Pytho
  • 如何解决 C# 应用程序中的 FTP 超时问题

    我正在使用以下 C 代码从远程服务提供商通过 FTP 传输约 40MB 的 CSV 文件 大约 50 的情况下 下载会挂起并最终超时 在我的应用程序日志中 我得到如下一行 gt Unable to read data from the tr
  • 更改 editText 提示的字体

    是否可以更改显示在提示中的字体EditText场地 我想在 xml 本身中设置字体 您可以使用 SpannableString 和自定义 TypefaceSpan 来更改它 首先 创建一个 Custom TypefaceSpan 类 pub
  • 避免图像 CSS 拉伸

    我正在将图像渲染成div 我想避免我的形象被拉伸 div height 300px width 300px img min width 300px min height 300px max height 300px 我的问题是我的图像的宽度
  • 适用于 Node.js 脚本的 hashbang

    我正在尝试为 node js 创建一个可以在多种环境中运行的脚本 特别是对我来说 我经常在 OS X 和 Ubuntu 之间来回切换 在前者中 Node 安装为node 但在后者中是nodejs 在我的脚本的顶部 我可以有 usr bin
  • 茉莉花业力中的模块“DynamicTestModule”导入了意外值“未定义”

    我正在使用 jasmine karma 进行单元测试 配置 types jasmine 2 8 6 types jasminewd2 2 0 3 types jquery 3 3 22 types node 8 9 4 codelyzer
  • JS Promises - 当只有单个路径是异步时的 if-else 流程

    我正在重写一些遗留代码 这些代码是使用同步ajax构建的 太糟糕了 现在我正在使用 Promises 特别是 Bluebird 在很多情况下 函数有很多路径 其中只有一个是异步的 问题是我必须识别所有路径并手动从每个路径返回新的承诺 像这样
  • 如何在 C++ (Win32) 中有效地终止进程?

    我目前正在编写一个非常轻量级的程序 因此我必须使用 C 因为它没有绑定到 NET 框架 这大大增加了程序的大小 我需要能够终止进程 为此我需要获取进程句柄 不幸的是我还没想好如何做到这一点 附 我知道要杀死一个进程 你必须使用终止进程 与其
  • 对通过指针访问结构成员感到困惑

    我是 C 新手 对通过指针引用结构成员时得到的结果感到困惑 请参阅以下代码示例 当我第一次引用 tst gt number 时发生了什么 我在这里缺少什么基本的东西 include
  • 使用正则表达式通过php过滤xpath中的属性

    我正在尝试使用与其 id 属性匹配的正则表达式来过滤 html 表 我究竟做错了什么 我正在尝试实现的代码 this gt xpath new DOMXPath this gt dom this gt xpath gt registerNa
  • JavaScript 中的日期格式转换

    我想知道转换这种格式的时间戳的最佳方法是什么 2012 02 18 14 28 32 到此格式的日期演示 Saturday Feb 2012 14 28 32 非常感谢 Javascript 日期函数非常糟糕 您可以选择转换为 UTChtt
  • 想要添加图像的div左上角

  • case类中的var成员会影响case类的相等性吗?

    我在代码中大量使用了案例类 响应案例类的底层相等定义以确保行为正确 然后现在我发现我需要向案例类添加另一个字段成员 所以如果我添加一个var案例类中的字段成员 是否会弄乱案例类的相等属性 如果 1 是 那么如果我只改变var字段值一次 之后