我们可以在运行时为 scala 类分配/更改特征吗?如何 - 有示例代码吗?喜欢策略模式(四帮设计模式)

2023-12-11

解释一下我的问题:

类别 : 玩具

特质1:说话像男性

特质2:说话像女人

我可以在运行时更改玩具的行为(特征),以便有时同一个对象像男性一样说话,有时同一个对象像女性一样说话吗?

我想改变运行时的说话行为。


sealed trait Speaker
case object Male extends Speaker
case object Female extends Speaker

class Toy(name: String, speaks: Speaker = Male) { 
  def speak = speaks match {
    case Male   => "ugh"
    case Female => "What time do you call this?"
  }
}

Then

barbie = ken.copy(speaks = Female)

您无法更改trait对象在运行时扩展的 s,因为trait混合以创建一个类(在 .class 文件中)。给定的对象只有一个类,并且永远无法更改。

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

我们可以在运行时为 scala 类分配/更改特征吗?如何 - 有示例代码吗?喜欢策略模式(四帮设计模式) 的相关文章

  • scala/spark 代码不允许在 hive 中添加列

    如果源数据有新列 我尝试在 Hive 表中添加一列 所有新列的检测都运行良好 但是 当我尝试将列添加到目标表时 我收到此错误 for f lt df schema fields if f name chk spark sqlContext
  • 对于空列表,max() 应该返回什么?

    Got java util NoSuchElementException head of empty list所以我试着检查一下 但现在我明白了 info max of a few numbers FAILED info 0 did not
  • 逆变方法参数类型

    wiki 逆变方法参数类型 https en wikipedia org wiki Covariance and contravariance 28computer science 29 Contravariant method argum
  • Scala:具有复杂结构的树插入尾递归

    我正在 scala 中创建自定义对象树 并且我的插入方法引发堆栈溢出 因为它不是尾递归 但是 我不太清楚如何使其尾递归 我见过使用 累加器 变量的相关示例 但它们要么是只能相乘和覆盖的整数之类的东西 要么是我在适应树时遇到困难的列表 这是我
  • Scala 中值类的隐式 Json 格式化程序

    我有许多值类组成了一个更大的对象案例类 final case class TopLevel foo Foo bar Bar final case class Foo foo String extends AnyVal final case
  • Scala Array.apply 有何魔力

    来自 scala 2 10 4 的 array scala Array定义为 final class Array T length Int extends java io Serializable with java lang Clonea
  • 最小重复子串

    我正在看 Perl代码高尔夫页面 http www perlmonks org node id 82878 不要问为什么 并遇到了这个 第 3 洞 最小重复图案 编写一个子例程 它接受一个字符串 该字符串可能包含 重复模式 并返回最小的重复
  • 使用原始类型模拟案例类

    考虑以下类型结构 trait HasId T def id T case class Entity id Long extends HasId Long 比方说 我们想在一些测试中模拟实体类 val entityMock mock Enti
  • 使用 Akka 玩 2.5 - 找不到参数超时的隐式值:akka.util.Timeout

    我正在尝试使用 Play 2 5 测试 Akka 但遇到了一个似乎无法解决的编译错误 我正在关注 Play 文档中的此页面 https playframework com documentation 2 5 x ScalaAkka http
  • 使用 Spray-json 解析简单数组

    我正在尝试 但失败了 了解 Spray json 如何将 json feed 转换为对象 如果我有一个简单的 key gt value json feed 那么它似乎可以正常工作 但是我想要读取的数据出现在如下列表中 name John a
  • 如何在 Scala 中打印任何内容的列表?

    目前我有一个打印整数的方法 def printList args List Int Unit args foreach println 我如何修改它 使其足够灵活 可以打印任何内容的列表 您不需要专用的方法 所需的功能已经在集合类中 pri
  • Java 表达式树 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有相当于 net的 LINQ 下的表达式树JVM 我想实现一些类似 LINQ 的代码结构Scala
  • 对 Scala Not Null 特征的库支持

    Notice 从 Scala 2 11 开始 NotNull已弃用 据我了解 如果您希望引用类型不可为空 则必须混合魔法NotNull特征 编译器会自动阻止你输入null 可以值在里面 看到这个邮件列表线程 http www nabble
  • 类型级编程有哪些示例? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我不明白 类型级编程 是什么意思 也无法使用Google找到合适的解释 有人可以提供一个演示类型级编程的示例吗 范式的解释和 或定义将
  • 提供通用服务接口最具体实现的依赖注入机制

    我觉得我和标题一起玩了流行语宾果游戏 这是我所要求的一个简洁示例 假设我有一些实体的继承层次结构 class BaseEntity class ChildAEntity BaseEntity class GrandChildAEntity
  • 分析 sbt 构建

    我的 sbt 构建需要很长时间 它又大又复杂 很难知道从哪里开始清理 看起来 sbt 保留了很多关于构建结构的元数据 包括相互依赖关系 命名任务 范围界定等 有了所有这些元数据 似乎很容易跳入并测量每个不同任务 及其范围 花费的时间 在代码
  • 将 yaml 中的列表映射到 Scala 中的对象列表(Spring Boot)

    背景 我已经阅读了很多关于如何使用的示例ConfigurationProperties从配置中读取列表 见下文 https github com konrad garus so yaml https github com konrad ga
  • Akka Streams / HTTP:从响应中获取原始请求

    我有一个 Akka Streams 源 它会遍历流程并发布 HTTP 请求 source map toRequest via Http outgoingConnection host map toMessage 假设toRequest方法将
  • 使用 Scala 进行网页抓取 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 按字符分割字符串

    scala 有一个标准的分割字符串的方法StringOps split 但它的行为有点让我惊讶 演示一下 使用快捷便利功能 def sp str String str split toList 以下表达式全部计算结果为 true sp Li

随机推荐

  • 到底为什么我们需要 React.forwardRef ?

    假设我有一个带有可滚动子组件的组件 并且我想公开滚动的功能 const MyComponent props gt return
  • 2 个“样式”内联 css img 标签?

    我有以下标签 img src http img705 imageshack us img705 119 original120x75 png style width 100px alt 25 我已经将两个内联 CSS 命令放入 style
  • 如何通过命名空间获取属性的值

    我想获取属性的内容xsi 架构位置 它与 php 中的 getElementsByTagName 完美配合 以及之后的 foreach 但它很丑 对吗 如何通过简单的 Xpath 查询获得相同的内容 这是 xml 内容的简短示例
  • JQuery 或 vanilla Javascript 中的 DOM Mutation 事件

    JQuery 或普通 Javascript 中是否存在触发跨浏览器的 DOM 突变事件 为了澄清这一点 假设我的页面上有一个脚本 它将一个 div 插入到正文中 我无权访问该脚本 也不知道 div 何时被插入 我想知道是否有一个 DOM 突
  • Visual Studio Code 不运行 Python

    我在 Windows 10 上使用最新版本的 Visual Studio Code 和 Python 3 6 64 位 我安装了 Python 扩展 微软制作的扩展 每次我尝试运行一个简单的程序 例如 print Hello World 时
  • jquery .load() 函数在phonegap下不起作用

    jquery load 函数在 iPad 上的 PhoneGap 下不起作用 它在移动 Safari 中工作得很好 但它在 Phonegap 应用程序中不起作用 任何帮助 将不胜感激 更新 代码如下 this image container
  • 理解 C 命名空间

    引用自here 在 C 中 有两种不同的类型命名空间 struct union enum 标记名称的命名空间和 typedef 名称的命名空间 name c cat name c include
  • 如何在 Javascript 中获取 X509Certificate 指纹?

    我需要用 javascript 编写一个函数 forge 获取 pfx 证书的缩略图 我创建了一个测试证书 mypfx pfx 通过使用 C X509Certificate2 库 我可以通过传递文件字节数组和密码来查看 X509Certif
  • 如何在 MySQL 查询中使用 BETWEEN 的反义词? [复制]

    这个问题在这里已经有答案了 我有一个工作查询 它 使用 BETWEEN 来查找日期范围内的结果 我需要的是相反的结果或不是给定日期范围之间的结果 这是下面的查询 SELECT loanac id loanac name loanac lac
  • 摆动计时器 - 时间波动

    我在游戏中使用了 Swing Timer 但是当游戏运行时 它似乎有时运行平稳 有时又变慢 为什么时间会波动 我该如何解决它 import java awt Color import java awt Graphics import jav
  • Python mySQL 更新,工作但不更新表

    我有一个 python 脚本需要更新 mysql 数据库 到目前为止我有 dbb MySQLdb connect host localhost user user passwd pass db database try curb dbb c
  • 使用 tableGrob 在表中添加上标

    如何在表格中添加上标 例如 列b of df会将重复索引指示为上标 我可以考虑引入列的值b作为表达 但可能有更好的方法 Data df lt data frame a 1 6 b rep letters 1 3 each 2 Code li
  • git 正在尝试上传已手动删除的文件

    我在旧的提交中添加了一个文件 并且没有推送该提交 然后我从目录中删除了该文件 之后 我做了更多更改并添加了更多提交 现在每次我尝试推送代码时都会遇到此错误git push u origin master Counting objects 5
  • 两个ModalViewController

    我有一个 navigationController 从中启动 ModalViewController 在此 ModalViewController 中 我将显示 MailComposer 它本身是另一个 ModalViewControlle
  • 我已完成的作业的 AWS EMR 减速器输出在哪里(应该在 S3 上,但那里什么也没有)?

    我遇到一个问题 即我在 AWS EMR 上的 Hadoop 作业未保存到 S3 当我在较小的样本上运行作业时 作业可以很好地存储输出 当我在完整数据集上运行相同的命令时 作业再次完成 但 S3 上不存在任何我指定要输出的内容 显然有一个20
  • 根据前面的单词从段落中提取数值

    我正在处理列中的一些大文本字段 经过一些清理后 我得到如下所示的内容 truth val 5 xerb Scale 2 perb Scale 1 我想提取数字 2 我试图匹配字符串 xerb Scale 然后提取 2 我尝试捕获包含 2 的
  • Riverpod 监听在 statenotifier 更改后没有被调用

    我构建了一个应用程序 用户可以在其中选择他的位置 我们将显示附近的可用项目 class LocationState LatLng location LocationState this location LocationState copy
  • DLLNotFoundException - Unity3D 插件

    我在某些 Windows 机器上的独立构建中遇到 DLLNotFoundException 其他机器则运行良好 Dll 文件肯定在plugins 文件夹中 也将其复制到projectName Data 文件夹中 但没有区别 还尝试将 dll
  • Jersey 2.x 安全上下文不起作用?

    当我尝试创建 java jersey 应用程序时 身份验证角色对我不起作用 Java 代码 package org student resource import javax annotation security PermitAll im
  • 我们可以在运行时为 scala 类分配/更改特征吗?如何 - 有示例代码吗?喜欢策略模式(四帮设计模式)

    解释一下我的问题 类别 玩具 特质1 说话像男性 特质2 说话像女人 我可以在运行时更改玩具的行为 特征 以便有时同一个对象像男性一样说话 有时同一个对象像女性一样说话吗 我想改变运行时的说话行为 sealed trait Speaker