为什么案例类仅扩展 Product 而不是 Product1、Product2、...、ProductN?

2024-01-08

当我了解到案例类扩展了 Product 后,我​​想知道为什么它们不扩展 ProductN。例如,给出如下代码:

case class Foo(a: Int)

我预计Foo(1).asInstanceOf[Product1[Int]]工作,但它没有(用 Scala 2.9.1 检查,并由其他来源和Product文档)。

我对此很感兴趣,因为我想声明以下类:

abstract class UnaryOp[T1 <: Exp[_], R](t1: T1) extends Exp[R] {
  this: Product1[T1] =>
}

这样,一元运算的节点必须实现 Product1。如果只是一个带有一个参数的案例类就足够了,那就太好了。


考虑一下:

case class X(n: Int)
case class Y(x: String, y: Int) extends X(y)

如果案例类别扩展ProductN,那么这将延长两者Product1 and Product2,但是类型参数发生了变化,因此有两种不同的重载_1。这只是一个问题——我敢打赌还有其他问题。

现在,案例类继承案例类已被弃用,Martin Odersky 现在正在考虑让它们继承 ProductN。 AFAIK,虽然还没有完成,但障碍已经消除了。

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

为什么案例类仅扩展 Product 而不是 Product1、Product2、...、ProductN? 的相关文章

  • Scala repl 抛出错误

    当我打字时scala在终端上启动 repl 它会抛出此错误 scala gt init error error while loading AnnotatedElement class file usr lib jvm java 8 ora
  • Spark - scala - 如何检查配置单元中是否存在表

    我必须使用 Spark 1 6 2 scala 检查配置单元中是否存在表 如果没有 我必须创建一个空数据框并将其保存为配置单元表 如果存在 则覆盖现有表 我需要一个返回布尔值的函数 基于该函数我可以做出上述决定 是否创建新表或覆盖现有表 1
  • Joda Time 类没有任何构造函数...为什么?我做错了什么?

    显然 Eclipse 上的 Scala 试图让我相信DateTime Period DateMidnightJoda Time 中的许多其他类没有任何构造函数 考虑到它们的文档显示了构造函数和许多方法 这很奇怪 我唯一可以访问的是静态方法
  • Spark:出现心跳错误后丢失数据

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

    我想从命令行启动 Scala Swing 应用程序 然后在应用程序启动后 放入 Scala REPL 中以用作控制界面 理想情况下 我还想预先绑定一些变量名称 更好的是使用 REPL 的 Java2D 终端模拟器 但我找不到任何合适的东西
  • HashPartitioner 是如何工作的?

    我阅读了文档HashPartitioner http spark apache org docs 1 3 1 api java index html org apache spark HashPartitioner html 不幸的是 除了
  • 更改 build.sbt 自定义任务中的版本

    我在 build sbt 中定义了一个自定义任务 val doSmth taskKey Unit smth doSmth version 1 0 SNAPSHOT 但它不会改变版本 我真正想要的是自定义 sbt 发布任务 它将始终将相同的版
  • 从 HList 获取元素

    我尝试了 HList 并按预期进行了以下工作 val hl 1 foo HNil val i Int hl 0 val s String hl 1 但是 我无法让以下代码正常工作 让我们暂时假设对列表进行随机访问是一个聪明的主意 class
  • 可选择将项目添加到 Scala 映射

    我正在寻找这个问题的惯用解决方案 我正在构建一个valScala 不可变 Map 并希望有选择地添加一项或多项 val aMap Map key1 gt value1 key2 gt value2 if condition key3 gt
  • 对两种类型之间的二元关系进行建模

    有企业 也有人 用户可以对某个企业点赞或发表评论 但效果是一样的can not发生在一个人身上 当用户发布有关某个企业的内容或对其点赞时 该企业就被称为target喜欢或帖子 trait TargetingRelation Targetin
  • 在 Spark MLlib 上使用 Java 中的 Breeze

    在尝试从Java使用MLlib时 使用微风矩阵运算的正确方法是什么 例如scala 中的乘法很简单 matrix vector 相应的功能在Java中是如何表达的 有一些方法 例如 colon times 可以通过正确的方式调用 breez
  • 规范化且不可变的数据模型

    Haskell如何解决 规范化不可变数据结构 问题 例如 让我们考虑一个表示前女友 男友的数据结构 data Man Man name String exes Woman data Woman Woman name String exes
  • 使用 net.liftweb.json 或 scala.util.parsing.json 解析大型 (30MB) JSON 文件会出现 OutOfMemoryException。有什么建议吗?

    我有一个包含大量测试数据的 JSON 文件 我想解析这些数据并推送我正在测试的算法 它的大小约为 30MB 包含大约 60 000 个元素的列表 我最初在 scala util parsing json 中尝试了简单的解析器 如下所示 im
  • Scala中有类似Java Stream的“peek”操作吗?

    在Java中你可以调用peek x gt println x 在 Stream 上 它将对每个元素执行操作并返回原始流 这与 foreach 不同 foreach 是 Unit Scala 中是否有类似的东西 最好是适用于所有 Monady
  • 具有继承类型的 Aux 模式推理失败

    我有一个复杂的玩具算法 我希望纯粹在类型级别上表示 根据饮食要求选择当天菜肴的修改 对卷积表示歉意 但我认为我们需要每一层才能达到我想要使用的最终界面 我的代码有一个问题 如果我们表达一个类型约束Aux 模式生成的类型基于另一个泛型类型 它
  • 应对失败的“未来”

    给出以下两种方法 def f Future Int Future 10 def g Future Int Future 5 我想把它们写成 scala gt import scala concurrent Future import sca
  • IntelliJ:线程“主”java.lang.NoClassDefFoundError中的异常:org/apache/spark/sql/types/DataType

    附言 有一个类似的问题here https stackoverflow com questions 40287289 java lang noclassdeffounderror org apache spark logging 但那是在
  • 如何在 sbt 控制台中加载 scala 文件? [复制]

    这个问题在这里已经有答案了 可能的重复 将 Scala 文件加载到解释器中以使用函数 https stackoverflow com questions 7383436 load scala file into interpreter to
  • Spark 2.2 无法将 df 写入 parquet

    我正在构建一个聚类算法 我需要存储模型以供将来加载 我有一个具有以下架构的数据框 val schema new StructType add StructField uniqueId LongType add StructField tim
  • Spark scala 模拟 Spark.implicits 用于单元测试

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

随机推荐

  • 折叠 data.table 中的行

    我有一个包含 1M 行和 2 列的 data table 虚拟数据 require data table ID lt c 1 2 3 variable lt c a b a c c d dt lt data table ID variabl
  • 如何使用内联元素的 HTML 内容创建纯 CSS 工具提示

    TL DR See 亚当的回答 已接受 或更新 5在我的 当前解决方案的问题 我的问题展示了我的旅程 以相当长但解释性的方式找到解决方案 描述陷阱和限制 我正在创建一个模块 将术语表术语描述添加到文本中使用的各个单词中 纯文本描述一切正常
  • Elasticsearch 术语过滤器引发“过滤器不支持 [mediatest]”

    我的查询是这样的 query filtered filter bool must term online 1 terms mediaType flash 它引发 QueryPars
  • gforth 是否包含网络套接字功能?

    通常 在学习语言时 我会编写某种类型的服务器 做gforth https github com forthy42 gforth有能力使用网络套接字吗 我没有看到任何有关套接字的信息手册 https www complang tuwien a
  • 将 dplyr 查询保存到 postgresql

    很抱歉问了这个非常简单的问题 但是 如何保存查询结果构建dbplyr无需在内存中加载数据 这就是我尝试过的 library DBI library odbc library RPostgreSQL library tidyverse lib
  • EditText 不会显示在 ListView 上方

    我有一个 ListView 活动 我希望在其上方显示一个 EditText 以及最终的一个按钮 我相信我的 xml 没问题 但由于某种原因 EditText 没有显示 ListView 占据了整个屏幕 我的 XML 如下所示
  • 全局程序集缓存中的 Microsoft.SqlServer.Types.dll?

    我目前正在努力解决由以下原因引起的部署问题Microsoft SqlServer Types及其关联的非托管库 SqlServerSpatial110 dll 两者都是为了微软 SQL Server 2012 这些问题很容易解决 只是典型的
  • 来自插入符号中的训练数据的 ROC 曲线

    使用R包插入符号 如何根据train 函数的交叉验证结果生成ROC曲线 比如说 我执行以下操作 data Sonar ctrl lt trainControl method cv summaryFunction twoClassSummar
  • 在调用者线程中捕获线程的异常?

    总的来说 我对 Python 和多线程编程非常陌生 基本上 我有一个脚本可以将文件复制到另一个位置 我希望将其放置在另一个线程中 以便我可以输出 表明脚本仍在运行 我遇到的问题是 如果无法复制文件 它将引发异常 如果在主线程中运行 这是可以
  • mod_rewrite - 将不存在的所有内容发送到index.php

    我想让我的 htaccess 文件重写 index php 文件中不存在的任何内容 例如 www example com category subcategory product1 将被重写为index php request catego
  • 恢复 SQL Server 2008 数据库后出现“无效的对象名称”

    我正在切换我的网络主机并备份我的数据库 由于我的新主机的一些限制 我无法恢复 bak 文件 必须发送给他们以便他们恢复它 一旦他们恢复了它 我运行了我的应用程序 我得到了这个 System Data SqlClient SqlExcepti
  • 从多通道 wav 文件中读取单个通道

    我需要从包含最多 12 个 11 1 格式 通道的 wav 文件中提取单个通道的样本 我知道在正常的立体声文件中样本是交错的 先向左 然后向右 就像这样 1st L 1st R 2nd L 2nd R 所以 要阅读左频道 我会这样做 for
  • Keras 语义分割加权损失像素图

    我正在尝试使用多类语义分割unet https arxiv org pdf 1505 04597 pdf设计 与unet论文类似 我想为超重边框创建一个损失函数 第5页 因此 我想为每个图像制作一个自定义损失图 其中对象之间的边界权重过大
  • 减少包含超过 500 个事务的数据表页面的加载时间

    有没有办法仅通过使用数据表来减少 IE 中页面的加载时间 如果我们使用服务器端分页和排序 我们是否也可以在服务器端进行快速搜索 并且仅呈现特定选项卡而不是整个页面
  • 反序列化嵌套 JSON

    我需要一些帮助 我正在尝试反序列化 Json 文件 然后将其添加到列表中 以便我可以将其放入 C 应用程序中的表中 我生成了部分代码 但没有生成嵌套区域 我想计算属性的总数 在 json 中显示为 features 然后我想列出每个属性的
  • 使无边框窗体可移动?

    有没有办法使没有边框 FormBorderStyle 设置为 none 的窗体在鼠标在窗体上单击时可移动 就像有边框一样 This http www codeproject com KB cs csharpmovewindow aspxCo
  • XML 中的 HTML。我应该使用 CDATA 还是编码 HTML [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在使用 XML 来共享 HTML 内容 AFAIK 我可以通过以下方式嵌入 HTML 对其进行编码 我不知道使用它是否完全安全 我必须再次解
  • 为什么允许对角线移动会使 A* 和曼哈顿距离不可接受?

    我对使用 A 和曼哈顿距离度量的网格中的对角线移动有点困惑 有人可以解释为什么使用对角线移动会使其不可接受吗 进行对角线运动不会找到更好的最佳解决方案 因为比上下左右移动更少的步骤即可达到目标状态 还是我错过了一些东西 正如烧杯的评论所指出
  • 使用 jQuery 在 Firefox 中获取自动计算边距

    通过下面的标记和 CSS 我尝试获取计算出的 shell 左边距 section class page title div class shell h5 class title Welcome h5 div section shell zo
  • 为什么案例类仅扩展 Product 而不是 Product1、Product2、...、ProductN?

    当我了解到案例类扩展了 Product 后 我 想知道为什么它们不扩展 ProductN 例如 给出如下代码 case class Foo a Int 我预计Foo 1 asInstanceOf Product1 Int 工作 但它没有 用