문제

Scala Actor 예제에서 나는 매개 변수가없는 메시지가 배우에게 전송되는 곳을 보았습니다 (예 : 이것), case classes (또는 case objects) 작성한 다음 메시지로 사용되었습니다. 상징도 잘 작동하고 약간 깔끔해 보이며, Erlang에 관한 책을 읽은 후에는 더 자연스럽게 보입니다. 나는 상징 평등이 원격 액터에게 효과가 있다고 가정합니다.

매개 변수가있는 메시지의 경우 케이스 클래스가 명백한 선택이므로 메시지 유형 간의 일관성이 하나의 문제일까요?

두 가지 접근 방식을 위해 갈 이유가 있습니까?

도움이 되었습니까?

해결책

나는 그렇게 생각하지 않습니다 SymbolS는 사용을 대체합니다 case 클래스. 사실, 나는 어떤 용도로 전적으로 확신하지 못합니다 Symbol 다른 언어 (예 : Ruby, Smalltalk)의 상징의 힘이 부족한 경우, 그것은 단지 인턴 된 문자열 일뿐입니다.

예를 들어, 표준 경매 예에서 기호만으로 입찰 / 제안의 복잡성을 어떻게 표현하는지 알기가 어렵습니다.

에 관해서 case 사물, 나는 또한 이것들이 상징보다 바람직하다고 생각합니다. 예를 들어, 인스턴스가 될 수 있습니다 traitS 등, 따라서 공급 기능.

다른 팁

짧은 대답은 컴파일 타임 확인입니다.

생각 기호조차도 메시지로 사용될 수 있으며 케이스 객체보다 훨씬 간결합니다 (정의 할 필요가 없습니다), 컴파일러는 철자가 틀린 기호를 감지 할 수 없으며 배우가 왜 특정 메시지를받지 않는지 알아내는 데 어려움을 겪게됩니다. 그들은해야합니다.

케이스 클래스 및/또는 객체가 메시지로 사용되는 경우, 컴파일러는 프로그램이 실행되기 전에 존재하지 않는 메시지를 보내거나받지 않는지 알려줍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top