价值的存在量化

2024-01-11

我在 Scala 语言中遇到了对值的存在量化 规范(3.2.10 存在类型)。

x: y.Inner forSome{val y : Outer}

有人有说明性的用例吗?

T forSome {val x: S}定义为T forSome { type t <: S with Singleton }。规范(3.2.1 Singleton Types)中提到了 Singletron 特征,但我在 Scaladoc 中找不到它。它在哪里定义的?


它与类型名称中提到的内部类一起很有用。例如,请参阅中定义的 Graph 和 Node 类Scala 之旅:内部类 http://www.scala-lang.org/node/115。对值的存在量化用于写入某些未指定图的节点类型。

type SomeNode = g.Node forSome { val g: Graph }

如果您想要一个方法将两个节点作为必须来自同一个图的参数,这可能很有用。

def somethingWithTwoNodes[N <: g.Node forSome { val g: Graph }](n1: N, n2: N) = (n1,n2)

请注意,2.7 不会接受该方法定义,因为它认为 N 中存在某种递归。

那么如果你有

val g1 = new Graph
val g2 = new Graph

然后这些编译

somethingWithTwoNodes(g1.newNode, g1.newNode)
somethingWithTwoNodes(g2.newNode, g2.newNode)

但这些不

somethingWithTwoNodes(g1.newNode, g2.newNode)
somethingWithTwoNodes(g2.newNode, g1.newNode)

至于 Singleton 特征,它并没有以典型的方式真正定义,即没有它的类文件。它类似于 Any、AnyVal、AnyRef 和 Null 类型。它定义在src/compiler/scala/tools/nsc/symtab/Definitions.scala以及这些其他类型,但我怀疑这是非常有用的信息。作为最终特征,这也是一个奇怪的野兽,这意味着您在定义特征或类时不能将其混合在一起,它实际上更像是编译器归因于类型的标记,表明它与任何其他类型都是唯一的。

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

价值的存在量化 的相关文章

随机推荐

  • django - 通过过滤对象列表来获取对象列表

    我正在创建用户活动流 活动模型 class Activity models Model actor models ForeignKey User action models CharField max length 100 content
  • 多行的自定义图例,同一文本有两个标记

    I would like perform the type of legend shown in the figure 我用一些技巧做的那个图只是为了代表我真正想要的东西 所以它不能很好地显示图例中粉红色标记的颜色 图中圆圈代表两个不同模型
  • 在 Visual Studio Code 上使用 ,但显示“无法从远程存储库读取”。

    我开始学习 Git 和 GitHub 现在 我可以创建我的存储库来练习 并且可以将提交推送到 git bash 上的原始存储库 在 GitHub 中 但是当我尝试推送 Visual Studio Code 时 我收到了此错误 权限被拒绝 公
  • 如何将数据绑定到标头?

    我在操作栏中有一个带有侧面导航抽屉的主要活动 在 default screen xml 中指定如下 请注意 为简洁起见 省略了很多代码
  • 如何在 iframe 中使用 css 媒体查询?

    我有一个加载 iFrame fancybox 的页面 我的 CSS 媒体查询在父页面上工作正常 但是当在 iFrame 中调用内容时 媒体查询不起作用 iFrame 中的内容有自己的样式表 如何让媒体查询在 iFrame 中工作 仅供参考
  • 如何通过配置而不是模块引导程序附加事件侦听器?

    在 ZF3 中 您通常会附加事件侦听器MvcEvent在模块的 Module php 中 如下所示
  • jquery 1.4.2 中的更改破坏了代码?

    我在使用 jquery 1 3 的页面上有此代码 但现在在 jquery 1 4 2 中 它因语法错误 无法识别的表达式而中断 document ready function span name charge click function
  • 如何判断SQL查询类型是DML还是DDL?

    如何判断SQL查询类型是DDL还是DML 数据定义语言 DDL 语句用于定义数据库结构或模式 一些例子 CREATE 在数据库中创建对象 ALTER 更改数据库的结构 DROP 从数据库中删除对象 TRUNCATE 从表中删除所有记录 包括
  • QT qmysql 驱动未加载

    我知道这个论坛上已经有很多关于这个问题的主题 但我没有设法解决我的问题 我的配置如下 QT 版本 5 14 2 mscv2017 64 编译器 mscv amd64 我的问题是我的应用程序没有加载 libmysql dll 这是我所做的 我
  • 仅具有底部边框的输入文本字段

    如何设置文本样式input字段使其只有一个border bottom像这个 预期文本Input Field Use outline 0然后设置border bottom input outline 0 border width 0 0 2p
  • Pandas 变换方法执行缓慢

    我有一个规范的熊猫transform性能似乎莫名其妙地缓慢的示例 我已阅读问答apply method https stackoverflow com questions 54432583 when should i ever want t
  • 从 Fragment 调用 DialogFragment

    我正在尝试从 Fragment 类中调用 DialogFragment 我有一个 ImageView 并且想在我设置的 ImageView 的 onClickListener 中调用我的 DialogFragment 类 我在 onClic
  • 如何使用CGAffineTransform MakeRotation?

    我想使用 Quartz 2D 绘制文本 菜单 方向错误 我希望 菜单 仍然可读并且与 X 轴成 45 度 下面是我的代码 CGContextSelectFont context Arial 12 kCGEncodingMacRoman CG
  • 如何将 YAML 文件解析/读取为 Python 对象?

    如何将 YAML 文件解析 读取为 Python 对象 例如 这个 YAML Person name XYZ 对于这个 Python 类 class Person yaml YAMLObject yaml tag Person def in
  • 如何让jquery移动控件组宽度为100%?

    我正在使用 jquery mobile 来做演示 我想让本地导航的宽度为 100 但我不知道该怎么做 代码在这里 ul class localnav li a href class ui btn active 111 a li li a h
  • 避免重复

    如何避免字符串中的重复项 在 C 中 例如 我有 a a b b c 我想得到像 a b c 这样的答案 通过使用HashSet
  • 为所有用户安装可选的桌面快捷方式

    我想做一个wix安装程序 带有optional所有用户的桌面快捷方式 可选的意思 我不能把它放在component主exe的 但在一个单独的component 这样我就可以设置一个单独的feature为快捷方式 当这样做时 wix 抱怨道
  • 避免注册表 php 中的 SQL 注入

    我的本地主机上有一个简单的注册表单 仍在测试 我想知道它是否会受到 SQL 注入攻击 Code name mysql real escape string POST name password mysql real escape strin
  • 如何在 Blazor 服务器应用程序中以编程方式注销(身份)

    在我的代码中 我处理 DbUpdateConcurrencyException 对于更新用户帐户的情况 并且用户不再存在 我想将他们注销 因为他们不再是有效用户 当然 这不是什么大问题 因为这种情况应该很少见 他们尝试访问的任何页面都不会接
  • 价值的存在量化

    我在 Scala 语言中遇到了对值的存在量化 规范 3 2 10 存在类型 x y Inner forSome val y Outer 有人有说明性的用例吗 T forSome val x S 定义为T forSome type t lt