почему я не могу использовать заглавную букву в качестве первого символа var в примере распределения данных кластера akka

Я пробую официальный пример на 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 Community Edition


person dukyz    schedule 31.01.2018    source источник
comment
Есть ли проблема, когда вы переименовываете переменную DataKey в dataKey??   -  person dukyz    schedule 31.01.2018
comment
не должно быть никаких проблем с переименованием, как вы это сделали. но вы не упомянули, в чем была ошибка? не компилируется?   -  person Danny Mor    schedule 31.01.2018


Ответы (2)


Что касается сопоставления шаблона с @, @ позволяет вам работать с самим объектом после сопоставления. В вашем примере вы проверяете переменную c, если эта переменная является объектом Changed(DataKey), тогда вы извлекаете DataKey с помощью метода get самого объекта.

 case c @ Changed(DataKey) ⇒
      val data = c.get(DataKey)
person SCouto    schedule 31.01.2018
comment
большое спасибо за объяснение '@'. Но есть ли проблема, когда вы переименовываете переменную DataKey в dataKey?? - person dukyz; 31.01.2018
comment
не должно быть, но проверьте, что в вашем коде переменная dataKey не имеет правильного цвета при изменении (dataKey), поэтому компилятор не понимает, что dataKey — это dataKey, объявленный выше. Ничего не видно на твоей фотке :/ - person SCouto; 31.01.2018

Наконец-то я нашла ответ на вопрос! https://www.safaribooksonline.com/library/view/programming-scala-2nd/9781491950135/ch04.html

Есть несколько правил и подводных камней, которые следует учитывать при написании оговорок case. Компилятор предполагает, что термин, начинающийся с заглавной буквы, является именем типа, а термин, начинающийся со строчной буквы, считается именем переменной, которая будет содержать извлеченное или сопоставленное значение.

В предложениях case предполагается, что термин, начинающийся со строчной буквы, является именем новой переменной, которая будет содержать извлеченное значение. Чтобы сослаться на ранее определенную переменную, заключите ее в обратные галочки. И наоборот, термин, начинающийся с заглавной буквы, считается именем типа.

person dukyz    schedule 31.01.2018