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'将结果绑定到名称。
此功能是意味着返回'字符串选项'。编译器试图警告我什么?
我复制并粘贴了你的代码片断 - 没有任何警告。你确定警告来自这个特定的功能吗? –
不,它不会来自这个 - 它会来自你正在使用它的地方 - 看到你在这里返回一个“字符串选项” - 你可能在某个地方使用它而不使用它的值 – Carsten
重新启动Visual Studio后,IDE停止显示警告。我很抱歉浪费任何人的时间。 – Russell