스칼라 액터에게 메시지를 보내기위한 기호 또는 사례 클래스?
-
06-07-2019 - |
문제
Scala Actor 예제에서 나는 매개 변수가없는 메시지가 배우에게 전송되는 곳을 보았습니다 (예 : 이것), case class
es (또는 case object
s) 작성한 다음 메시지로 사용되었습니다. 상징도 잘 작동하고 약간 깔끔해 보이며, Erlang에 관한 책을 읽은 후에는 더 자연스럽게 보입니다. 나는 상징 평등이 원격 액터에게 효과가 있다고 가정합니다.
매개 변수가있는 메시지의 경우 케이스 클래스가 명백한 선택이므로 메시지 유형 간의 일관성이 하나의 문제일까요?
두 가지 접근 방식을 위해 갈 이유가 있습니까?
해결책
나는 그렇게 생각하지 않습니다 Symbol
S는 사용을 대체합니다 case
클래스. 사실, 나는 어떤 용도로 전적으로 확신하지 못합니다 Symbol
다른 언어 (예 : Ruby, Smalltalk)의 상징의 힘이 부족한 경우, 그것은 단지 인턴 된 문자열 일뿐입니다.
예를 들어, 표준 경매 예에서 기호만으로 입찰 / 제안의 복잡성을 어떻게 표현하는지 알기가 어렵습니다.
에 관해서 case
사물, 나는 또한 이것들이 상징보다 바람직하다고 생각합니다. 예를 들어, 인스턴스가 될 수 있습니다 trait
S 등, 따라서 공급 기능.
다른 팁
짧은 대답은 컴파일 타임 확인입니다.
생각 기호조차도 메시지로 사용될 수 있으며 케이스 객체보다 훨씬 간결합니다 (정의 할 필요가 없습니다), 컴파일러는 철자가 틀린 기호를 감지 할 수 없으며 배우가 왜 특정 메시지를받지 않는지 알아내는 데 어려움을 겪게됩니다. 그들은해야합니다.
케이스 클래스 및/또는 객체가 메시지로 사용되는 경우, 컴파일러는 프로그램이 실행되기 전에 존재하지 않는 메시지를 보내거나받지 않는지 알려줍니다.