부분 활성 패턴 및 사용 가능한 여러 가지 패턴을 포함하여 F #에서 활성 패턴을 정의하고 사용하는 방법을 이해합니다. 예 :활성 패턴에 대해 혼동이 있음
let (|Big|Small|) animal = if animal.IsBig then Big(animal) else Small(animal)
let f = function | Big(_) -> "big" |Small(_) -> "small
는 그러나, 나는 let
바인딩, 인수 및 다른 장소에서 활동 패턴과 차별 노동 조합을 사용에 대한 혼란 스러워요. 예를 들어 MSDN에는 다음 코드가 있습니다.
let GetSubstring1 (Slice(p0, p1, text)) =
printfn "Data begins at %d and ends at %d in string %s" p0 p1 text
text.[p0..p1]
약간 혼란 스럽습니다.
특정 문제.
type Union = A of int * int | B of int
은 어떻게 든에만 Union.A
을 받아들이는 기능, 예를 만들 수의 내가 차별 노동 조합 있다고 가정 해 봅시다
let f (A(a, b)) = a + b
이 경우에는 일치하지 않는 패턴이 있다고합니다. 그것을 만족시키는 방법이 있습니까?
문제는 단순한 활성 패턴보다 일반적입니다. ** 모든 ** 패턴 일치는 즉시 나타나는 것보다 더 많은 상황에서 발생할 수 있습니다. – ildjarn