Символы или тематические классы для отправки сообщений в Scala Actors? - PullRequest
3 голосов
/ 23 октября 2009

В примерах актера Scala, которые я видел, когда актеру отправляется сообщение без параметров (например, this ), case class es (или case object s) создаются и затем используются какСообщения.Символы работают так же хорошо и выглядят немного аккуратнее и после прочтения книги по Erlang кажутся более естественными.Я предполагаю, что равенство символов будет работать для удаленных участников.

Для сообщений с параметрами классы case были бы очевидным выбором, поэтому, возможно, проблема заключается в согласованности между типами сообщений?

Есть ли причины для такого подхода?

Ответы [ 2 ]

6 голосов
/ 23 октября 2009

Краткий ответ - проверка во время компиляции.

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

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

3 голосов
/ 23 октября 2009

Я не думаю, что Symbol s является заменой для использования case классов. На самом деле, я не совсем уверен, что вообще используется Symbol, поскольку ему не хватает силы символов в других языках (например, Ruby, Smalltalk) - это просто интернированная строка.

Например, в стандартном примере аукциона трудно понять, как вы представляете сложность заявки / предложения, используя только символы.

Что касается case объектов , я также считаю, что они предпочтительнее символов. Например, они могут быть экземплярами trait s и т. Д. И, следовательно, предоставлять функциональность.

...