为什么我不能使用大写作为akka集群中var的第一个字符分发数据示例

时间:2018-01-31 07:49:44

标签: scala akka akka-cluster akka-actor

我正在尝试https://doc.akka.io/docs/akka/current/distributed-data.html#using-the-replicator上的官方示例 (本页上的第一个scala示例)
但是当我稍微改变我的代码时,这似乎很奇怪。

我录制了一段视频,我在代码中更改了。我所做的唯一更改是第16行的变量名称。从DataKey到dataKey。我刚刚重命名了。 https://photos.app.goo.gl/CZrnNZlW85e9MaF73

现在的问题是它为什么会发生 在这个例子中,我不能使用大写作为var的第一个字符 请帮我弄清楚。非常感谢。

Akka版本:2.5.9
Scala版本:2.11.12
IDE:IntelliJ IDEA 2017.3.3社区版

2 个答案:

答案 0 :(得分:0)

关于与@匹配的模式,@允许您在匹配后处理对象本身。在您的示例中,您检查变量c,如果该变量是对象Changed(DataKey),那么您通过对象本身的方法DataKey检索get

 case c @ Changed(DataKey) ⇒
      val data = c.get(DataKey)

答案 1 :(得分:0)

我终于找到了问题的答案! https://www.safaribooksonline.com/library/view/programming-scala-2nd/9781491950135/ch04.html

  

在编写案例条款时,要记住一些规则和陷阱。编译器假定以大写字母开头的术语是类型名称,而以小写字母开头的术语假定为将保存提取或匹配值的变量的名称。

     

在case子句中,以小写字母开头的术语被假定为将保存提取值的新变量的名称。要引用先前定义的变量,请将其括在后面的刻度中。相反,假定以大写字母开头的术语是类型名称。