澄清:我不是在问我可以使用Singleton设计模式.问题是scala中提供的很大程度上没有文档的特征.
这个特点是什么?到目前为止,我能找到的唯一具体用例是将特征限制为仅对象,如本问题所示:限制对象的特征?
这个问题揭示了scala.Singleton纯编译器小说的问题?,但显然还有另一个用例!
有一些我无法想到的显而易见的用途,还是仅仅是主要的编译器?
我认为 Martin Odersky 对链接问题链接的邮件列表线程的评论回答了这个问题:
\n\n\n\n\nSingleton 类型本质上是一种存在值的编码技巧。IE
\n\nRun Code Online (Sandbox Code Playgroud)\n\nT forSome { val x: T }\n变成
\n\nRun Code Online (Sandbox Code Playgroud)\n\n[x.type := X] T forSome { type X <: T with Singleton }\n单例类型通常不直接使用\xe2\x80\xa6
\n
换句话说,除了指导编译器的打字阶段之外,没有任何预期用途。Scala 语言规范在 \xc2\xa73.2.10 和\xc2\xa73.2.1中有此位表示编译器可能会使用此特征来声明类型是稳定的。
\n\n您还可以通过以下内容看到这一点(Scala 2.11):
\n\n(new {}).isInstanceOf[Singleton]\n\n<console>:54: warning: fruitless type test: a value of type AnyRef cannot also\n be a Singleton\n (new {}).isInstanceOf[Singleton]\n ^\nres27: Boolean = true\nRun Code Online (Sandbox Code Playgroud)\n\n所以你甚至不能在有意义的测试中使用这个特性。
\n\n(这不是一个明确的答案,只是我的观察)
\n| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |