Scala Traits 中的冲突字段

2024-01-09

我了解 scala 如何通过考虑所提到的特征的顺序来解决钻石继承情况。我很好奇它如何解决字段的相同问题。这就是我想要理解的 -

class A {print("A")}
trait B extends A {print("B") ; val x="b"}
trait C extends B {print("C")}
trait D extends A {print("D");  val x="d"}

object TraitsEx extends App {
  var d = new A with B with D
  println(d.x)
}

上面的代码无法编译。


嗯,并不像你所看到的那样神奇。如果这是一个财产A类,那么你可以覆盖它 - 通过类线性化,你已经知道,每个with X, where X extends A将覆盖值:

trait A {
  val x = "a"
}

trait B extends A {
  override val x = "b"
}

trait C extends A {
  override val x = "c"
}

object Main {
  def main(args: Array[String]): Unit = {
    println((new A {}).x)
    println((new A with B).x)
    println((new A with B with C).x)
  }
}

prints

a
b
c

然而,当每个班级介绍自己的班级时x编译器无法证明可以覆盖其他编译器xs,那么解决这个问题就交给你了。它还建议了一种解决方案:

object TraitsEx extends App {
  var d = new A with B with D { override val x = "d" }
  println(d.x)
}

这样你就可以覆盖所有不同的xs 并消除歧义。

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

Scala Traits 中的冲突字段 的相关文章

  • 通过 Gradle 进行测试时记录日志

    在测试时 Gradle 似乎将 stdout stderr 重定向到project dir build reports tests index html 有没有办法避免这种重定向 并将内容打印到控制台 附加信息 这是一个 Scala 2 9
  • Scala 泛型函数值(匿名函数)- 缺少参数类型(错误)

    我是 Scala 新手 Scala 代码运行器版本 2 7 7 final 我真的不明白为什么当我们使用高阶函数时它要求调用者提供参数类型 在下面的示例中 我有一个独立的对象 Util 具有一个功能 但在Main块中 调用者必须将参数类型传
  • 副作用是纯函数中找不到的一切吗?

    可以肯定地说 以下二分法成立 每个给定的函数是 要么纯粹 或有副作用 如果是这样 函数的 副作用就是纯函数中找不到的任何东西 这很大程度上取决于您选择的定义 可以公平地说 函数是pure or impure 纯函数始终返回相同的结果并且不会
  • Scala中如何将DataFrame转换为RDD?

    有人可以分享一下如何转换dataframe to an RDD Simply val rows RDD Row df rdd
  • Either 相当于受检查的异常吗?

    从 Scala 开始并阅读有关Either我很自然地将新概念与我所知道的东西 在本例中来自 Java 进行比较 与之前有什么区别吗concept检查异常和Either 在这两种情况下 失败的可能性在方法中明确注释 throws或返回Eith
  • Spark - Scala - 用另一个数据帧中的查找值替换数据帧中的值

    我正在 Databricks 上使用 Spark 编程语言是Scala 我有两个数据框 主要数据框 见截图 1 https i stack imgur com EShir png 查找数据框 见截图3 https i stack imgur
  • Scala 中使用转义特殊字符解码字符串问题

    我有一个多行 JSON 文件 其中包含编码为十六进制的特殊字符的记录 以下是单个 JSON 记录的示例 x22value x22 x22 xC4 xB1arines Bint xC4 xB1 xC3 xA7 Ramu xC3 xA7lar
  • 如何检查字符串中是否包含某个字符?

    我想检查字符串是否包含该字符 我正在编写一个刽子手代码 例如 下面是要猜测的单词 scala 但看起来像 至用户 假设用户输入字母 a 那么它一定看起来像 a a def checkGuess if result contains user
  • Scala 性能问题

    In the 丹尼尔 科泽夸 Daniel Korzekwa 撰写的文章 http blog danmachine com 2011 01 moving from java to scala one year html 他说以下代码的性能
  • 将 Scala 库转换为 DLL (.NET)

    我正在尝试从 scala 类创建一个 Dll 我将 IntelliJ 与 SBT 一起使用 我已经找到了一种使用 ikvm converter 将 jar 文件转换为 Dll 的方法 现在的问题是 当我在 SBT 下使用 package 从
  • 逆变方法参数类型

    wiki 逆变方法参数类型 https en wikipedia org wiki Covariance and contravariance 28computer science 29 Contravariant method argum
  • 使用原始类型模拟案例类

    考虑以下类型结构 trait HasId T def id T case class Entity id Long extends HasId Long 比方说 我们想在一些测试中模拟实体类 val entityMock mock Enti
  • 通用特征的隐式转换

    我正在实现一个数据结构 并希望用户能够使用任何类型作为密钥 只要他提供一个合适的密钥类型来包装它 我有这个关键类型的特质 这个想法是进行从基类型到键类型的隐式转换 反之亦然 实际上 只使用基类型 该特征看起来像这样 trait Key T
  • Java 表达式树 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有相当于 net的 LINQ 下的表达式树JVM 我想实现一些类似 LINQ 的代码结构Scala
  • 为什么《Scala 中的函数式编程》一书的“无异常处理错误”一章中没有提到“scala.util.Try”?

    在 Scala 中的函数式编程 一书中的 无异常处理错误 一章中 作者给出 从函数体抛出异常的问题 Use Option如果我们不关心实际的异常 Use Either如果我们关心实际的异常 But scala util Try没有提到 从我
  • 错误:协变类型 A 出现在逆变位置

    我试图写一个不可变的Matrix A 班级 我希望该类是协变的A但是当我把 在 前面A编译器开始抱怨类中的某些操作 以下是我的相关子集Matrix类 实际类比以下子集大 5 倍左右 class Matrix A private val co
  • Spark Scala 将列从一个数据帧复制到另一个数据帧

    我有一个原始数据框的修改版本 我在其上进行了聚类 现在我想将预测列恢复为原始 DF 索引没问题 因此匹配 我该怎么做 使用这段代码我得到一个错误 println Predicted dfWithOutput show println Ori
  • 类型级编程有哪些示例? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我不明白 类型级编程 是什么意思 也无法使用Google找到合适的解释 有人可以提供一个演示类型级编程的示例吗 范式的解释和 或定义将
  • 使用 scala 在 Flink 中进行实时流预测

    弗林克版本 1 2 0斯卡拉版本 2 11 8 我想使用 DataStream 来使用 scala 中的 flink 模型进行预测 我在使用 scala 的 flink 中有一个 DataStream String 其中包含来自 kafka
  • Scala 解析器组合器的运算符优先级

    我正在研究需要考虑运算符优先级的解析逻辑 我的需求并不太复杂 首先 我需要乘法和除法比加法和减法具有更高的优先级 例如 1 2 3 应视为 1 2 3 这是一个简单的例子 但你明白了 我需要将更多自定义标记添加到优先级逻辑中 我可以根据此处

随机推荐

  • 在 VSCode 中,保存时退出 Vim 插入模式

    我将 VSCode 与 VSCodeVim 扩展一起使用 在插入模式下 我可以按 CMD S 进行保存 当我这样做时 我还想自动退出插入模式 而不是按 ESC 这可能吗 我也在寻找与此问题类似的解决方案 vscode 中似乎无法将多个命令映
  • 实施 isalpha 时遇到问题

    我一直在研究CS50的可读性问题 第一步是创建一种仅计算字母字符的方法 它建议使用isalpha函数 但并不真正包含如何实现它的说明 下面是我的代码 它成功地计算了字母字符总数 但未能过滤掉标点符号 空格和整数 谁能指出我更好的方向来实施i
  • 街道地址的正则表达式

    我正在尝试匹配包含街道和号码的街道地址 我需要表达式来匹配街道名称的单词 后跟数字 例如 我想匹配 somestreet 25 some other street 23 a third street 190 但不匹配 a fourth st
  • 使用 Python 向 Microsoft Teams 发送自动消息

    我想运行一个 Python 脚本 最后通过 MS Teams 将结果以文本格式发送给几个员工 是否有任何已构建的库允许我通过 Python 代码在 Microsoft Teams 中发送消息 1 在 MS Teams 中创建 webhook
  • R清理csv文件

    我正在研究天气数据 我正在尝试清理 csv 文件 但不断收到奇怪的错误 在 csv 文件中 9999 和 9999 是空值 我想删除一半以上值为 9999 或 9999 的所有列 我读了 csv 文件 然后初始化一个空矩阵 使其与读取 cs
  • VBA循环遍历文件夹中的Excel工作簿并复制数据-不循环遍历所有文件

    我试图让 VBA 宏循环遍历特定文件夹中的所有 xls 文件 下面的代码在大多数情况下都有效 然而 我在这个文件夹中有 42 个文件 代码只循环其中大约 26 个 它们都是相同的文件扩展名 我的想法是它要么没有循环遍历所有文件 或者它正在循
  • `scanf("%d", ...)` 和 `gets` 一样糟糕吗?

    很多年了 gets被普遍贬低为不安全的功能 规范的SO问题是为什么 gets 函数如此危险以至于不应该使用它 https stackoverflow com questions 1694036 why is the gets functio
  • 如果第一个返回 false,则不会调用条件中的 javascript 函数调用

    我的问题看似简单 我有两个函数 function a 和 function b 它们显示 隐藏 div 并返回布尔值 我有条件 if function a function b do stuff 然而 如果 function a 返回 fa
  • 以编程方式更改网络选择模式

    我正在尝试 想知道是否有可能 编写一个应用程序 它将根据某些标准自动更改网络选择模式 例如 将网络运营商从 Vodafone 更改为 T Mobile 假设 SIM 卡注册会成功 但我不担心 atm 不幸的是 我似乎无法在 API 中找到任
  • 如何使用 swing 中的 GridLayout 使我的列具有不同的大小?

    我正在使用 GridLayout 我的代码如下 int changingVar 1 JPanel panel new JPanel new GridLayout changingVar 2 panel add new JButton BUT
  • 生成 HMAC SHA256 签名 Powershell

    对于 3commas 我尝试使用文档中的示例参数在 Powershell 中生成 HMAC SHA256 签名 secret NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H
  • 有没有办法使用 Hibernate 仅从对象中获取更改的列?

    在持久对象中 如果我只更改一个字段 是否可以仅通过Hibernate找出更改的字段 我知道我可以获取整个旧行和新行并进行比较 根据您的评论之一 我的理解是您正在寻找一种审核解决方案 因此我建议检查Envers http www jboss
  • 使用jackson转换Java对象时如何忽略可选属性

    我正在使用 Jackson 1 9 2 org codehaus jackson 将 Java 对象转换为匹配的 JSON 构造 这是我的java对象 Class ColorLight String type boolean isOn St
  • “列表”对象没有属性“值”错误

    我想将数据获取到 Excel 工作表 问题是 当我运行整个代码时 我收到一个错误 但当我单独运行它时 它没有错误 这就是我想要的 from xlwings import Workbook Sheet Range Chart import r
  • Google Simple API 密钥停止工作

    我正在使用 Python Twisted 对 Google API 进行异步 HTTP 调用 我们的客户端应用程序传递用户的 access token 然后我们执行 API 调用 https www googleapis com plus
  • 拦截 GNU tar 的 openat() 系统调用

    我正在尝试拦截openat Linux 上的系统调用使用自定义共享库 我可以通过以下方式加载LD PRELOAD 一个例子intercept openat c有这样的内容 define GNU SOURCE include
  • Heroku 应用程序在本地运行但出现 H12 超时错误(使用包)

    类似的问题已经被问过 但 H12 似乎是由很多原因引起的 没有一个答案适用于此 我之前用 heroku 构建过 python 应用程序 但现在我使用 Miguel Grinberg 的包结构Flask 大型教程 http blog migu
  • Paperclip、Delayed Job、S3、Heroku - 延迟处理敏感上传文件的设计:db 还是 s3?

    我需要有关使用 Heroku 回形针 延迟作业以及 如有必要 s3 上传和延迟处理文件的设计的反馈 它的一部分已经在其他地方讨论过 但我在任何地方都找不到完整的讨论 任务描述 上传文件 使用回形针到heroku上的s3 db 文件需要保密
  • Chrome扩展:识别后台页面iframe的网络请求?

    我正在编写一个 Chrome 扩展程序 它会代表用户定期检查网页 为了不引人注目 该页面被加载到扩展程序的隐藏背景页面上的 iframe 中 是否可以仅识别此 iframe 发出的 Web 请求 我最初的实验 见下文 似乎表明这很棘手 获取
  • Scala Traits 中的冲突字段

    我了解 scala 如何通过考虑所提到的特征的顺序来解决钻石继承情况 我很好奇它如何解决字段的相同问题 这就是我想要理解的 class A print A trait B extends A print B val x b trait C