-
Book Overview & Buying
-
Table Of Contents
F# 4.0 Design Patterns
By :
Interestingly, a pattern case may have the as clause appended to it. This clause binds the matched value to a name that may be used within the corresponding result-expression of the match construction or elsewhere within a local context of an outer let binding. The following script demonstrates how flexible the as pattern can be (Ch4_3.fsx):
let verifyGuid g =
match System.Guid.TryParse g with
| (true,_ as r) -> sprintf "%s is a genuine GUID %A" g (snd r)
| (_,_ as r) -> sprintf "%s is a garbage GUID, defaults to %A"
g (snd r);;
In the first case, r is bound using as to the result of TryParse, which is the tuple, so the expression snd r yields the parsed GUID value.
In the second case, as bounds r to any tuple; however, it must be obvious from the match cases sequencing that this case matches the failed GUID parsing and the value of argument is a garbage.
The following screenshot reflects firing each of these using as binding match cases...
Change the font size
Change margin width
Change background colour