`forSome { val `? 的示例

2024-01-11

Scala 语言规范指定的语法存在主义类型 https://scala-lang.org/files/archive/spec/2.13/03-types.html#existential-types as

Type               ::= InfixType ExistentialClauses
ExistentialClauses ::= ‘forSome’ ‘{’ ExistentialDcl
                       {semi ExistentialDcl} ‘}’
ExistentialDcl     ::= ‘type’ TypeDcl
                    |  ‘val’ ValDcl

我见过很多代码使用forSome and type一起,例如

List[T] forSome { type T; }

但我从未见过forSome with val,有样品吗?


如果您考虑一下,您很快就会意识到类型中出现的唯一时间值是路径相关类型。举例来说:

trait Trait {
  val x: { type T }
  val y: x.T // path dependent type: here comes our val
}

将其应用于存在类型,我们现在可以轻松地制作一个的样本forSome { val:

type SomeList = List[v.T] forSome { val v : { type T }; }

上述类型表示其元素属于路径相关类型的任何列表v.T.

举例来说:

object X { 
  type T = String
  val x: T = "hello" 
}
val l1: SomeList = List(X.x) // compiles fine
val l2: SomeList = List(123) // does not compile

的确,SomeList照原样来说是毫无用处的。通常,这样的存在类型只有作为更大类型的一部分才真正有用。

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

`forSome { val `? 的示例 的相关文章

随机推荐

  • 将两个 CGPoint 转换为 CGRect

    鉴于两个不同的CGPoints 将它们变成CGRect Example CGPoint p1 CGPointMake 0 10 CGPoint p2 CGPointMake 10 0 我怎样才能把它变成一个CGRect 这将采用两个任意点并
  • 在 Linux 上开发 C# [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想知道是否有有效的开源工具可以在 Linux Ubuntu 上开发 C 应用程序 特别是 我必须开发
  • 为什么 Python 中的列表理解如此称呼?

    我知道 Python 不是第一个具有列表理解的语言 我只是对这个名字的历史感兴趣 我特别感兴趣的是为什么它被称为理解 为什么 Python 中的列表理解如此称呼 这个名字来源于一个概念集合理解 http en wikipedia org w
  • Python range 函数如何在实际参数之前有一个默认参数?

    我正在编写一个函数 它接受一个可选列表并将其扩展到指定的长度 而不是写成foo n list None 我想知道如何模拟 Python 范围函数的行为 其工作原理如下 gt gt gt range 10 0 1 2 3 4 5 6 7 8
  • 批量上传图片到SSRS

    我们用了优秀的RSBuild http rsbuild codeplex com用于将报告批量上传到 SQL Server Reporting Services SSRS 但我找不到批量上传图像的方法 使用报告管理器一次上传一张图像是愚蠢的
  • (异步() => { })();这是什么?

    async function test async gt var a await this test1 var b await this test2 a var c await this test3 b this doThis a b c
  • 用于根据选择插入交叉引用的宏

    我目前在一家使用固定内部风格文档的公司工作 这包括我们的 Word 模板中内置的多级编号标题 IE 标题 1 1 1 标题 2 1 1 1 标题 3 etc 我们当前任务的很大一部分涉及添加对文档中其他部分的交叉引用 当文档有数百页且每页大
  • 使用 Eloquent (Laravel) 在分组之前进行排序

    我有一个包含以下列的 消息 表 CREATE TABLE messages id int 11 NOT NULL AUTO INCREMENT fromId int 11 NOT NULL toId int 11 NOT NULL mess
  • Java 函数在并行 MATLAB 中的非线性性能

    最近 我在我的项目中实现了并行化MATLAB http en wikipedia org wiki MATLAB计划 很大程度上取决于中提供的建议MATLAB 中 xlsread 速度慢 https stackoverflow com qu
  • 需要运行 .exe,然后在约 10 秒后终止它并移至批处理文件中的下一个命令

    我正在尝试创建一个运行 exe 的批处理文件 但在大约 10 秒后 在完成之前 杀死所述 exe 然后继续执行文件中的下一个命令 任何帮助将不胜感激 你可以使用这个 start program exe ping 127 0 0 1 n 10
  • Android Intent.ACTION_VIEW 基本身份验证

    如何将 HTTP 基本身份验证信息传递给Intent ACTION VIEW 这就是我激发意图的地方 public class OutageListFragment extends ListFragment implements Loade
  • 如何更改反向引用的大小写?

    我正在尝试修改 PowerShell 中的反向引用 但运气不佳 这是我的例子 456 Jane Doe replace d 3 2 ToUpper 1 如果我运行它 我会得到这个 简 无名氏 456 456 但我真的很期待这个 简 多伊 4
  • 将字符串(逐个字符)插入到更大的字符串中

    我试图通过用新字符串 toInsert 替换 原始 字符串中的子字符串来插入字符串 start参数是我要替换的子字符串的起始位置 注意 这是一个更大程序的一部分 但我只是想让这个功能发挥作用 include
  • 如何强制 PyCharm 检查requirements.txt 文件并建议更新?

    如何强制 PyCharm 检查requirements txt 文件并建议更新 我似乎无法控制这种情况何时发生 谢谢 我尝试打开任何 py 文件 检查包要求文件字段 设置 工具 Python 集成工具 没有任何东西触发 Windows 上的
  • 自定义表达式中的 Spotfire IF 语句 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 If Len case SPEC gt 0 case SPEC case type 当我尝试上面的公式时 我收到错误 gt 作为无
  • 符号查找错误(linux - c++)

    我正在研究多代理系统 例如Robocup soccerrSim2d在 Gnu linux 上 我的 distb 是 Ubuntu 11 10 内核 3 2 gcc 4 6 我安装了librcsc http sourceforge jp pr
  • Spring中依赖资源发生变化时重新加载类

    您知道 Eclipse 如何在更新 Tomcat 所依赖的资源文件 例如 spring 上下文文件 时自动重新加载在 Tomcat 中运行的类 这样您就不必重新启动 Tomcat 了 如何使类依赖于资源文件 以便 Eclipse 在资源文件
  • 比较 2 个 Dictionary 实例

    我想比较两个的内容Dictionary
  • 从github下载最新代码到Android Studio

    How to sync我当地的安卓工作室项目上有最新的代码github 我想下载所有最新的更改但我不希望我的本地更改被覆盖 如果存在冲突 它应该要求我解决这些特定文件 有办法实现这一点吗 我想下载所有最新的更改 但我不想要我的本地 更改被覆
  • `forSome { val `? 的示例

    Scala 语言规范指定的语法存在主义类型 https scala lang org files archive spec 2 13 03 types html existential types as Type InfixType Exi