Scala中Set()和Set.empty的区别是什么?哪个更规范,哪个更有表现力?
Set()
Set.empty
cngwdvgl1#
Set()实际上是在幕后调用Set.empty,因此后者的性能要高出一小部分:https://github.com/scala/scala/blob/2.12.x/src/library/scala/collection/generic/GenericCompanion.scala#L49此外,您可能更喜欢Set.empty,因为它的可读性更好。
zy1mlcev2#
我找到了Set.empty的一个实现,它可能更有效一些。https://lampsvn.epfl.ch/trac/scala/browser/scala/tags/R_2_9_1_final/src//library/scala/collection/immutable/Set.scala#L1我个人更喜欢使用命名工厂方法而不是构造函数,但有人可能会说它更冗长和无用。这取决于你。
qpgpyjmq3#
随便设置s是空的Set()实际上是在幕后调用Set.empty,所以后者的性能要高出一小部分:
3条答案
按热度按时间cngwdvgl1#
Set()
实际上是在幕后调用Set.empty
,因此后者的性能要高出一小部分:https://github.com/scala/scala/blob/2.12.x/src/library/scala/collection/generic/GenericCompanion.scala#L49
此外,您可能更喜欢
Set.empty
,因为它的可读性更好。zy1mlcev2#
我找到了Set.empty的一个实现,它可能更有效一些。
https://lampsvn.epfl.ch/trac/scala/browser/scala/tags/R_2_9_1_final/src//library/scala/collection/immutable/Set.scala#L1
我个人更喜欢使用命名工厂方法而不是构造函数,但有人可能会说它更冗长和无用。
这取决于你。
qpgpyjmq3#
随便设置s是空的Set()实际上是在幕后调用Set.empty,所以后者的性能要高出一小部分: