2015-11-18 201 views
0

我在fsharp函数中有一个简单的模式匹配表达式,它会一直生成一个编译器警告,我想知道是什么导致了这个以及我需要做什么来阻止它。F#编译器警告

在我的简化示例中,我尝试提取正则表达式匹配的第二组,然后使用模式匹配或者在表达式不匹配时返回None或在匹配时返回Some(SecondGroupValue)。

let GetGroup2 s = 
    let pattern = @"(d+)(.+)(d+)" 
    let m : Match = Regex.Match(s, pattern) 

    // this generates a warning : 
    match m.Success with 
    | true -> 
     if (m.Groups.Count >= 3) then (string)m.Groups.[2] |> Some else None 
    | false -> None 

我得到的警告是:

这个表达式的类型应该是“单位”,但有类型“字符串选项”。使用ignore放弃表达式的结果,或者使用'let'将结果绑定到名称。

此功能是意味着返回'字符串选项'。编译器试图警告我什么?

+2

我复制并粘贴了你的代码片断 - 没有任何警告。你确定警告来自这个特定的功能吗? –

+1

不,它不会来自这个 - 它会来自你正在使用它的地方 - 看到你在这里返回一个“字符串选项” - 你可能在某个地方使用它而不使用它的值 – Carsten

+0

重新启动Visual Studio后,IDE停止显示警告。我很抱歉浪费任何人的时间。 – Russell

回答

0

重新启动Visual Studio和我的电脑后,IDE停止显示警告。我很抱歉浪费任何人的时间。