应将Actor的方法和成员定义为私有

时间:2016-01-07 13:10:20

标签: scala actor

定义演员时的最佳做法是什么?

  • 演员状态:定义一个" var"更好吗?使用如下代码中的集合,或者更好地定义" val"可变收集?我们应该将其定义为私人吗?

  • 我们应该将Actor的方法定义为私有吗?

CopyFromPath

2 个答案:

答案 0 :(得分:2)

关于第一点,一般来说,我都不会去。相反,将print_r($average_score['avg']; 方法设置为将集合作为参数的方法,并在使用context.become(...)更改集合时更新actor的状态。例如:

receive

关于第二点,任何助手方法可能仅供演员自己使用,因此将它们设为私有。

答案 1 :(得分:1)

首先,它确实取决于你正在变异的项目集合的大小。您是否会在100k消息的过程中向Map添加100k项?如果是这种情况,也许您应该使用可变集合,以避免复制整个集合以添加每个项目的开销。根据用例做出明智的决定。

以下是对可变集合与不可变集合的性能的引用http://www.scala-lang.org/docu/files/collections-api/collections.html

对于第二点,方法的可见性与Actor的接口无关。 应该Actor进行交互的唯一方法是通过询问和告知消息,以便除了向读者推断目的之外,任何成员方法的可见性都没有什么影响。