Scala 示例 - 具有上下文边界错误的特征类型参数?

2023-12-23

阅读《Scala by Example》一书,Martin 在第 54 页解释类型界限时有一个示例:

trait Set[A <: Ordered[A]] {
  def incl(x: A): Set[A]
  def contains(x: A): Boolean
}

and

trait Set[A <% Ordered[A]] ...

第 55 页进一步说明。他还表示,<:>

然而,当我用自己的代码重复该示例时,IDE 抱怨特征可能没有视图边界,只有类型边界。将特征关键字更改为抽象类或将视图绑定更改为类型绑定会有所帮助。这是书上的错误吗?


让我们使用名为 REPL 的强大工具来了解发生了什么:

scala>  trait Example[A<:Ordered[A]] { def contains(x:A):Boolean }
defined trait Example

scala>  class Example2[A<%Ordered[A]]( val a:A) { def isLower(otherA:A):Boolean = a< otherA }
defined class Example2

scala>  :javap Example
Compiled from "<console>"
public interface Example{
    public abstract boolean contains(scala.math.Ordered);
}


scala>  :javap Example2
Compiled from "<console>"
public class Example2 extends java.lang.Object implements scala.ScalaObject{
    public java.lang.Object a();
    public boolean isLower(java.lang.Object);
    public Example2(java.lang.Object, scala.Function1);
}

正如您所看到的,视图绑定成为Example2 构造函数的第二个参数。由于特征没有构造函数,因此显然不可能提供视图绑定。

为什么这在以前的版本中可能是一个谜(也许在特征内部创建了一个额外的 Function 1 值并由编译器填充?)

关于你关于Scala进化的问题,它是成熟且强大的。您可以预期主要版本(2.8、2.9、2.10)之间的变化,但我不认为 scala 对此还不够成熟。然而,总是有改进的空间

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

Scala 示例 - 具有上下文边界错误的特征类型参数? 的相关文章

  • 为什么 String 不实现 From<&String>?

    背景 我知道 Rust 人们更喜欢 str而不是 String 但在某些情况下我们只得到 String 一个例子是当你打电话时std iter Iterator peekable 返回值是一个Peekable i 将原始迭代器包装到其中并为
  • 特性与界面

    我最近一直在尝试学习 PHP 我发现自己对 Trait 很着迷 我理解水平代码重用的概念 并且不想必然从抽象类继承 我不明白的是 使用特征与接口之间的关键区别是什么 我尝试寻找一篇不错的博客文章或文章来解释何时使用其中一种 但到目前为止我发
  • 如何在 Akka Stream 中记录流量?

    我有一个带有单个流 图的 Akka Stream 应用程序 我想测量源头的流量并每 5 秒记录一次 例如 在过去 5 秒内收到 3 条消息 我尝试过 someOtherFlow groupedWithin Integer MAX VALUE
  • 简单的 Scala actor 问题

    我确信这是一个非常简单的问题 但很不好意思地说我无法理解它 我有一个 Scala 值列表 我想使用演员来并行地对每个值进行一些 外部 调用 我想等到所有值都已处理完毕 然后继续 没有共享值被修改 有人可以建议吗 Thanks Scala 中
  • 如何找到 Oracle 视图的基础列和表名称?

    这听起来应该很简单 但事实并非如此 我找不到任何 Oracle 元数据 视图可以提供 Oracle 视图列的基础列和表名称 我发现这样做的唯一方法是解析视图源 SQL 这与精确的科学相去甚远 为了解释我想要什么 请考虑我在 SCOTT 模式
  • 在结构定义上指定“Fn”特征绑定,而不修复“Fn”参数之一

    我有一个包含函数对象的结构 struct Foo
  • 为什么调用 take() 方法时 Slick 会生成子查询

    I use Slick http slick typesafe com 1 0 0 RC1 我对表对象有这样的定义 object ProductTable extends Table Int String String String Dou
  • 如何在Dotty中使用given?

    我在看Dotty下的文档Contextual Abstractions页面 我看到了Given Instances 给定实例 或者简单地 给定 定义了 规范 值 用于合成给定子句的参数的某些类型 例子 trait Ord T def com
  • IntelliJ IDEA Scala 插件问题

    我对新的 Intellij IDEA 10 和 Scala 插件有疑问 当我在 Scala 源文件中输入任何内容时 编辑器会永久冻结 在其他文件 java 和其他 编辑器中效果很好 结构视图 scala 检查和显示成员功能已关闭 堆大小增加
  • 自定义 NIO 文件系统无法通过 SBT 的测试任务加载

    为了进行测试 我使用内存中的 NIOFileSystem执行 memoryfs https github com openCage memoryfs 我以前已经利用过它 并且它似乎运行良好 例如梅文 然而 现在 在SBT项目中 不可能初始化
  • 新式(“内联”)宏需要 scala.meta

    我刚刚更新到 scala meta 2 0 0 M1 和最新的 scala 2 12 3 现在宏不再编译 我所做的唯一更改是将元版本从 1 8 0 更改为 2 0 0 M1 错误 新式 内联 宏需要 scala meta 有谁知道是否有快速
  • scala/spark 代码不允许在 hive 中添加列

    如果源数据有新列 我尝试在 Hive 表中添加一列 所有新列的检测都运行良好 但是 当我尝试将列添加到目标表时 我收到此错误 for f lt df schema fields if f name chk spark sqlContext
  • Scala 集合不一致

    为什么 Scala Collections API 中的集合和列表之间缺乏一致性 例如 有不可变的 Set 但也有可变的 Set 如果我想使用后者 我可以简单地这样做 val set Set A set new A 但是 本身不存在可变列表
  • Scala 中值类的隐式 Json 格式化程序

    我有许多值类组成了一个更大的对象案例类 final case class TopLevel foo Foo bar Bar final case class Foo foo String extends AnyVal final case
  • 最小重复子串

    我正在看 Perl代码高尔夫页面 http www perlmonks org node id 82878 不要问为什么 并遇到了这个 第 3 洞 最小重复图案 编写一个子例程 它接受一个字符串 该字符串可能包含 重复模式 并返回最小的重复
  • 使用 Akka 玩 2.5 - 找不到参数超时的隐式值:akka.util.Timeout

    我正在尝试使用 Play 2 5 测试 Akka 但遇到了一个似乎无法解决的编译错误 我正在关注 Play 文档中的此页面 https playframework com documentation 2 5 x ScalaAkka http
  • 阶乘的 Scala 排列

    我怎样才能找到n Scala 中某些字母的排列 Scala 2 9 RC1 scala gt abc permutations toList res58 List String List abc acb bac bca cab cba
  • Play Framework 2.3 (Scala) 中的自定义 JSON 验证约束

    我设法使用自定义约束实现表单验证 但现在我想对 JSON 数据执行相同的操作 如何将自定义验证规则应用于 JSON 解析器 示例 客户端的 POST 请求包含用户名 username 我不仅要确保该参数是非空文本 而且还要确保该用户确实存在
  • Scala:如何在超类上实现克隆方法,并在子类中使用它?

    我可能会以错误的方式处理这个问题 但我想要一个像这样的对象 class MyDataStructure def myClone val clone new MyDataStructure do stuff to make clone the
  • 使用 scala 集合 - CanBuildFrom 麻烦

    我正在尝试编写一个接受任何类型集合的方法CC 并将其映射到一个新的集合 相同的集合类型但不同的元素类型 我正在挣扎 基本上我正在尝试实施map but 不在集合本身上 问题 我正在尝试实现一个带有签名的方法 它看起来有点像 def map

随机推荐

  • Android:API 级别低于 19 的远程 Webview 调试?

    据我所知 远程调试通过chrome inspect已在 API 级别 19 中添加用于 Web 视图 不过 我正在开发一个支持 17 设备的应用程序 只是在 API 19 上 我得到了02 28 00 31 16 569 12332 123
  • 在 R 中将 LASSO 与分类变量结合使用

    我有一个包含 1000 个观察值和 76 个变量的数据集 其中大约 20 个是分类变量 我想对整个数据集使用 LASSO 我知道通过 lars 或 glmnet 在 LASSO 中使用因子变量并不能真正起作用 但是变量太多 并且它们可以采用
  • 半六角形,只有一个元件

    我试图复制以下形状但没有成功 我想我需要一些 before and after伪元素以及以下 css pentagon position relative width 78px height 50px background 3a93d0 使
  • 当我在 Haskell 中编写“show”和“read”时发生了什么?

    以下是 GHCi 的简短文字记录 Prelude gt t read read Read a gt String gt a Prelude gt t show show Show a gt a gt String Prelude gt t
  • 使用计时器显示文本 3 秒?

    是否可以使用计时器在标签中显示文本 3 秒左右 F E 当您保存某些内容并且成功时 您会收到一条短信 成功 3秒后返回原页面 有人知道如何使用标签或消息框来做到这一点吗 是的 有可能 您可以在将标签文本设置为 成功 的位置启动计时器 并将其
  • elasticsearch 5.5突出显示字段不起作用

    我测试了弹性搜索突出显示字段功能 它工作正常 我用了弹性搜索2 4 4 and spring data elasticsearch 2 0 0 RELEASE 示例代码在下面的帖子中 如何使用 Spring data elasticsear
  • 如果该集合不可在进程之间整除,则使用 MPI_Scatter

    我有一个使用 MPI Scatter 和 MPI Gather 的程序 该程序将整数 N 作为输入 并返回从 2 到 N 的质数 我创建一个包含从 2 到 N 的数字的数组 并使用 MPI Scatter 将数组拆分为 N procs 数量
  • GCC 转储预处理器定义

    gcc g 有没有办法从命令行转储其默认预处理器定义 我的意思是像 GNUC STDC 等等 是的 使用 E dM选项而不是 c 示例 将它们输出到标准输出 echo gcc dM E echo clang dM E For C echo
  • Microsoft 整数文字扩展 - 在哪里记录?

    我在 Windows 安装的标准 stdint h 头文件中遇到了一些整数文字 文字具有以下形式的后缀 i8 ui8 i16 ui16 i32 ui32 i64 ui64 我以前遇到过 i64 形式的后缀 但从未遇到过任何其他形式的后缀 我
  • 尝试改进 Encode::decode 警告消息:$SIG{__WARN__} 处理程序中的段错误

    我正在尝试改进发出的警告消息Encode decode https metacpan org pod Encode FB WARN 我希望它打印正在读取的文件的名称以及在该文件中找到格式错误的数据的行号 而不是打印模块的名称和模块中的行号
  • Oracle STANDARD_HASH 在 PLSQL 中不可用?

    我正在尝试在 PL SQL 中使用 STANDARD HASH Oracle 12c 函数 但似乎不可用 SQL gt exec dbms output put line STANDARD HASH test BEGIN dbms outp
  • 一个数据流作业内的并行管道

    我想在 GCP 上的一个数据流作业中运行两个并行管道 我已经创建了一个管道 它工作得很好 但我想要另一个管道而不创建另一份工作 我已经搜索了很多答案 但找不到任何代码示例 如果我这样运行它就不起作用 pipe1 run pipe2 run
  • 在 python 中使用组合来处理非常大的序列

    我正在尝试确定 87 个不同字符串的所有组合 这些组合可以组成 29 个元素的序列 我在 python 中使用组合来执行此操作 如果序列只有 4 个元素长 但它无法处理 29 个元素 则效果很好 这是我正在使用的代码 combos iter
  • 如果背景不透明,ListViewItem 不会突出显示

    我有一个带有自定义渐变背景的 ListViewItem 默认选择器不再突出显示这些行 仅当我将背景设置为透明时 突出显示才有效 如果没有这种改变 我怎样才能获得亮点 这是我的列表视图
  • Git:准备好真正的合并提交后,如何创建一个简单的提交?

    调用后git merge no commit
  • 保持远程桌面会话“活动”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 AutoIt 来自动化 GUI 操作 使用 RDP 连接到运行要自动化的应用程序的计算机 每当我最小化 RDP 窗口 使用 m
  • 监控进程对每个CPU核心的使用情况

    有没有办法查询或计算CPU使用率单一进程 per 每个核心分别地 例如 名称 核心1 核心2 核心3 核心4火狐 exe 0 5 0 1 0 2 0 3 我知道一个名为 Process Explorer 由 Mark Russinovich
  • Excel VBA 日期之间的计数

    我需要创建一个函数来计算两个日期之间帐号的出现次数 第一个日期基于函数输入 第二个日期提前 3 个月 日期可能不包含在数据集中 该范围内的日期值的格式为 dd mm yyyy h mm 由于数据集的大小约为 150 000 行 我想在代码中
  • 从路径文件列表中列出Python中的目录树结构

    该问题旨在扩大 stackoverflow 上已通过主题 回答的问题的范围 python 中列出目录树结构 https stackoverflow com a 59109706 目标是形成一个直观地表示目录树的字符串列表 有分支机构 但输入
  • Scala 示例 - 具有上下文边界错误的特征类型参数?

    阅读 Scala by Example 一书 Martin 在第 54 页解释类型界限时有一个示例 trait Set A lt Ordered A def incl x A Set A def contains x A Boolean a