scala – “forSome {val`?
发布时间:2020-12-16 09:34:59 所属栏目:安全 来源:网络整理
导读:我在 scala reference,26页的文件中看到: 3.2.10 Existential Types Syntax: Type ::= InfixType ExistentialClauses ExistentialClauses ::= ‘forSome’ ‘{’ ExistentialDcl {semi ExistentialDcl} ‘}’ ExistentialDcl ::= ‘type’ TypeDcl | ‘val
我在
scala reference,26页的文件中看到:
3.2.10 Existential Types Syntax: Type ::= InfixType ExistentialClauses ExistentialClauses ::= ‘forSome’ ‘{’ ExistentialDcl {semi ExistentialDcl} ‘}’ ExistentialDcl ::= ‘type’ TypeDcl | ‘val’ ValDcl 我已经看到很多代码用于一些并键入在一起,例如 List[T] forSome { type T; } 但是我从来没有看到过,有一些val,有没有样品? 解决方法
如果你想到这一点,你很快会意识到,唯一的时间值出现在类型中是路径依赖类型。例如:
trait Trait { val x: { type T } val y: x.T // path dependent type: here comes our 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也是没用的。通常,这种存在类型只会作为更大类型的一部分才是真正有用的。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- SHELL训练营--day19_shell练习36-40
- SystemProperties读取资源文件.properties文件的
- angularjs – angular.element($window).scrollT
- 【Angular专题】——(1)Angular,孤傲的变革者
- 防止MSYS的bash’杀死陷阱^ C的进程
- AngularJS+RestfulAPI+BasicAuth+Python/PHP/Nod
- 由SOAP说开去 - - 谈谈WebServices、RMI、RPC、S
- BootStrap分页和标签
- 解析 – Scala Parser有时会跳过空格,有时却不会
- bash – 重定向cron作业的输出
热点阅读