꽤 많은 생성자가있는 공용체 유형을 사용할 때 거의 항상 단일 함수에서 많은 로직을 구현합니다. 즉 하나의 함수에서 모든 사례를 처리합니다. 때로는 하나의 함수를 분리하는 논리를 추출하고 싶지만 하나의 "생성자"만 매개 변수로 허용하는 함수를 가질 수는 없습니다.긴 패턴 일치 기능을 피하는 방법은 무엇입니까?
예 : 우리는 전형적인 "표현"유형이 있다고 가정 : 다음
type Formula =
| Operator of OperatorKind * Formula * Formula
| Number of double
| Function of string * Formula list
[...]
를, 우리는 표현을 계산하고 싶습니다 :
let rec calculate efValues formula =
match formula with
| Number n -> [...]
| Operator (kind, lFormula, rFormula) -> [...]
| [...]
이러한 기능은 모든 매우 길고 성장이 될 것입니다 새로운 수식 생성자. 그런 코드를 피하고 정리하는 방법은 무엇입니까? 긴 패턴 일치 구조가 필연적입니까?
"하나의 대/소문자 구분 논리를위한 논리를 추출하지만, 단 하나의"생성자 "를 매개 변수로 허용하는 기능을 가질 수는 없습니다.". 의사 코드로 예제를 줄 수 있습니까? – Christian
사실, 네가 할 수있다 :'let test (Some (x)) = x' 이것은 경고를 준다. 그러나 나는 그것이 당신이 원하는 것을 생각한다? – mydogisbox
@mydogisbox : 패턴이 일치하지 않으면 런타임 예외가 발생합니다.나는 하나 이상의 경우가있는 것을 위해 그것을 사용하지 않을 것입니다.) – scrwtp