带参数的活动模式

活动模式只是简单的功能。

与函数类似,你可以定义其他参数:

let (|HasExtension|_|) expected (uri : string) = 
    let result = uri.EndsWith (expected, StringComparison.CurrentCultureIgnoreCase)
    match result with
    | true -> Some true
    | _ -> None

这可以在以这种方式匹配的模式中使用:

    let isXMLFile uri =
        match uri with
        | HasExtension ".xml" _ -> true
        | _ -> false