未定义F#活动模式

时间:2016-07-13 19:38:39

标签: f#

我正在遵循here的解决方案,将DateTime.TryParseExact(比DateTime.TryParse友好得多)用于DateTime选项

为了节省您的点击,这是代码:

let (|DateTimeExact|_|) (format: string) s =
    match DateTime.TryParseExact(s, format, Globalization.CultureInfo.InvariantCulture, Globalization.DateTimeStyles.None) with
    | true, d -> Some d
    | _ -> None

当我尝试使用它时(在同一个模块中。我也尝试在同一个函数中定义它而没有运气),

match DateTimeExact "M-d-yyyy" dateStr with
| _ -> ()

Visual Studio使用错误标记“DateTimeExact”:

  

'未定义值或构造函数'DateTimeExact'

我做错了什么?当我将鼠标悬停在活动模式的let绑定上时,我看到

val( | DateTimeExact|_|) : (string -> string -> DateTime option)

1 个答案:

答案 0 :(得分:6)

你的语法不正确; correct syntax是:

// incomplete pattern, but if you _know_, you know
match dateStr with DateTimeExact "M-d-yyyy" _ -> ()

// complete pattern
match dateStr with
  | DateTimeExact "M-d-yyyy" _ -> ()
  | _                          -> failwith "didn't match"