我正在尝试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社区版
答案 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子句中,以小写字母开头的术语被假定为将保存提取值的新变量的名称。要引用先前定义的变量,请将其括在后面的刻度中。相反,假定以大写字母开头的术语是类型名称。