2010-02-05 6 views
11

일주일 이래로 나는 스칼라에서 프로그래밍을 읽고있다. 저자는 언어 요소를 단계별로 소개하지만 액터, 클로저, 커링 (currying)과 같은 기능적 요소를 사용할 때는 여전히 혼란 스럽습니다 ...Scala 기능적 디자인 패턴의 카탈로그

일반적인 사용 사례 카탈로그를 찾고 있습니다 또는 기능적 개념에 대한 모범 사례.

나는 클로저를 사용하거나 태닝이 클래스를 사용하는 경우에 대한 혼란 것 같다하는 경우에 대한 혼동

답변

8

같은 스칼라에서 GoF의 같은 잘 알려진 패턴을 재 구현하는 것을 의미하지 않습니다. 그것들은 언어의 일부일 뿐이며, 당신이하는 모든 임무를 수행합니다. OO가 처음으로 주류에 도달했을 때, 거의 같은 질문이 수업에 요구되었습니다.

액터의 경우 분산 프로그래밍 패러다임이며 언어 자체의 일부는 아닙니다. 이들은 동시성을 활용하고자 할 때 사용되며, 응용 프로그램은 동시 프로세스간에 상태를 공유 할 필요가 없으며 주로 병렬 처리를 지향합니다.

+1

아마 맞을 것입니다. 저는 OO에 익숙하며 답변을 이해합니다. OO의 경우 상속이나 집계를 사용해야하는시기, 인터페이스가 있어야하는시기 등을 물어볼 수있었습니다. 이 질문들에 대해 많은 자원을 발견 할 수 있지만 어떤 기능 구조가 언제 경험없이 조금 어려울지를 사용해야합니다. 이 주제에 대한 토론 링크는 괜찮습니다. – stacker

+2

@stacker 그게 사실이고 나는 나 자신에게 무엇을 권할 지 많이 모른다. Daniel Friedman의 "Little Schemer"와 "The Seasoned Schemer"또는 Chris Okasaki의 Purely Functional Data Structures와 같은 일부 서적이 도움이 될 수 있습니다. 그러나 Scala와 같은 것은 없습니다. 예를 들어, currying을 사용하는 _option_은 다소 드뭅니다. 대부분의 언어에서 모든 것이 카레이거나 아무 것도 아닙니다. 물론, OO의 혼합은 접근법을 선택하는 것을 더욱 어렵게 만듭니다. –

+1

이 유용한 사이트를 발견했습니다 : http://scala.sygneca.com/code/start – stacker

관련 문제