2012-01-11 2 views
1

제한된 의미로는 outref 클래스를 혼자서 작성하는 것이 매우 쉽지만 제 질문은 그것을 수행하는 방법이 아니지만 - 사용할 수있는 기능이 있습니까?스칼라에서 C# out 및 refim을 모방 - 기능을 사용할 준비가 되었습니까?

제가 발견 한 가장 가까운 것은 Reference 형질입니다 (하지만 형질입니다).

는 난 단지 심판 인/아웃 우아한 IFS 체인하게하기 때문에, 어느 쪽의 순수한 결과를 옵션이 아닌 튜플, 그리고하지, 그이 필요합니다.

+5

보관하려는 체이닝을 보여주기 위해 몇 가지 샘플 코드를 제공해 주시겠습니까? 아마도 다른 질문에 대한 답은 다음과 같습니다. http://stackoverflow.com/questions/6896118/basic-scala-oop-question-pass-by-reference –

+0

가장 간단한 예제는'if (foo (ref/out bar))입니다. return bar'. 링크를 주셔서 대단히 감사합니다. 나는 setter를 사용하지 않을 것이라고 생각하지만, 어쨌든 이것은 흥미로운 부분이었습니다. +1 – greenoldman

답변

5

아니요, Scala는 값 또는 이름으로 전달되는 매개 변수를 지원합니다. 참조로 전달되는 매개 변수는 사실 JVM에서 올바르게 수행하기가 실제로 어렵습니다. 이는 널리 사용되는 JVM 언어가없는 이유 중 하나 일 수 있습니다. 또한 out 및 ref 매개 변수는 부작용을 통한 프로그래밍을 권장합니다. 스칼라의 at 디자인은 가능하면 피하려고 시도합니다.

if의 연쇄에 관해서는, Scala에서와 같은 몇 가지 효과를 얻기위한 다양한 방법이 있습니다. "일치"표현식이 가장 명확하며, Option 또는 Either를 사용하여 모나드 구성을 조사 할 수도 있습니다.

+0

흠, "일치"하시겠습니까? 당신은 ref/out을 모방하기 위해 그것을 어떻게 사용하겠습니까? – greenoldman

+0

ref 또는 out을 직접적으로 모방하는 것이 아니라, 조건을 테스트하고 하나 이상의 변수를 바인딩하는 구조를 허용하는 것입니다. 나는 조건이 통과되었다고 가정하면서 조건 본문에 사용하기 위해 적절한 변수를 묶는 조건부 검사를 시도한다고 가정했습니다. 이런 종류의 파괴 테스트는 패턴 매칭이 완벽하기위한 것입니다. 패턴 일치에 임의의 논리를 포함하려면 gaurds (단순한 경우) 또는 추출기 (전체 전력)를 조사하십시오. –