gpt4 book ai didi

scala - 我可以用 scala.Singleton 做什么?

转载 作者:行者123 更新时间:2023-12-04 08:52:10 25 4
gpt4 key购买 nike

澄清一下:我不是在问我可以使用单例设计模式做什么。问题是关于 scala 中提供的大部分未记录的特征。

这个特质有什么用?到目前为止,我能找到的唯一具体用例是将特征仅限于对象,如以下问题所示:Restricting a trait to objects?

这个问题说明了这个问题 Is scala.Singleton pure compiler fiction? ,但显然还有另一个用例!

是否有一些我想不到的明显用途,还是主要是编译器魔术?

最佳答案

我认为 Martin Odersky 对 mailing list thread 的评论回答了这个问题。从链接问题链接到:

The type Singleton is essentially an encoding trick for existentials with values. I.e.

T forSome { val x: T }

is turned into

[x.type := X] T forSome { type X <: T with Singleton }

Singleton types are usually not used directly…



换句话说,除了指导编译器的打字阶段之外,没有其他用途。 Scala 语言规范在 §3.2.10 中也有这一点,还有 §3.2.1表示编译器可能会使用此特征来声明类型是稳定的。

您还可以通过以下内容(Scala 2.11)看到这一点:
(new {}).isInstanceOf[Singleton]

<console>:54: warning: fruitless type test: a value of type AnyRef cannot also
be a Singleton
(new {}).isInstanceOf[Singleton]
^
res27: Boolean = true

因此,您甚至无法在有意义的测试中使用该特征。

( 这不是一个确定的答案,只是我的观察 )

关于scala - 我可以用 scala.Singleton 做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25408204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com