gpt4 book ai didi

scala - 可变的 Collection.empty 方法是否违反了 Scala 的零参数命名约定?

转载 作者:行者123 更新时间:2023-12-01 09:54:28 24 4
gpt4 key购买 nike

This .empty 方法是如何在 Scala 11.5 的 scala.collection.mutable.Map 对象中声明的:

def empty[A, B]: Map[A, B]

这个方法不应该像这样有空括号吗?

def empty[A, B](): Map[A, B]

Scala 上的页面naming conventions建议,但没有明确说明,省略 0-arity 方法上的括号是纯函数代码的约定,包含空括号意味着该方法有副作用。 (我想我遇到了一条更明确的错误消息。)

可变的 .empty 方法有一个副作用,因为您可以区分对 .empty 的单独调用的结果。它不应该得到空括号,即使它在 immutable.Map 中的伙伴没有吗?

关于我自己的代码,在从 0-arity 方法创建和返回可变对象时是否应该遵循特殊的命名约定?

最佳答案

没有。 scala.collection.mutable.Map.empty[A, B] 没有任何副作用。这是一种每次调用时都会返回一个新的 mutable.Map[A, B] 的方法。

mutable.Map#empty(trait 本身的方法)也返回一个相同类型的新空 mutable.Map。它不会清空集合(就像它看起来可能的那样),因此没有副作用。

参见 the source如果您不确定。

关于scala - 可变的 Collection.empty 方法是否违反了 Scala 的零参数命名约定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31151616/

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