사용 기록 데이터베이스 레코드 또는 일부 모델 개체와 같은 몇 가지 속성에 의해 설명되어 복잡한 데이터 (함수형 프로그래밍 이론라는 제품 유형) : 사용 노조를 차별
type User = { Username : string; IsActive : bool }
type Body = {
Position : Vector2<double<m>>
Mass : double<kg>
Velocity : Vector2<double<m/s>>
}
(라고 합 유형) 데이터 가능한 값을 열거 할 수 있습니다. 예를 들면 : 판별 조합 값의 가능한 값도 함께 사용할 수 있음은
type NatNumber =
| One
| Two
| Three
...
type UserStatus =
| Inactive
| Active
| Disabled
type OperationResult<'T> =
| Success of 'T
| Failure of string
주 - 조작 결과는 동시에 하나 또는 Success
Failure
있지만 둘 수있다.
은이 같은 작업의 결과를 인코딩하는 레코드 유형을 사용할 수
이
type OperationResult<'T> = {
HasSucceeded : bool
ResultValue : 'T
ErrorMessage : string
}
그러나 작동 불량의 경우는 ResultValue
이 이해가되지 않습니다이다.
match result with
| Success resultValue -> ...
| Failure errorMessage -> ...
을 그리고 당신은 패턴 우리의 작업 유형의 레코드 유형 버전과 일치하는 경우는 적은 의미 할 것 : 그래서,이 유형의 차별 노조 버전에 일치하는 패턴은 다음과 같을 것이다
match result with
| { HasSucceeded = true; ResultValue = resultValue; ErrorMessage = _ } -> ...
| { HasSucceeded = false; ErrorMessage = errorMessage; ResultValue = _ } -> ...
을 그것은 장황하고 어색하고, 아마 덜 효율적 일 것입니다. 나는이 느낌이들 때 아마 당신이 틀린 도구를 사용하고 있다는 암시 일 것이라고 생각합니다.
이 페이지에는 http://msdn.microsoft.com/en-us/library/dd233205.aspx 끝에 간단한 문단이 있습니다. –