2015-11-18 199 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停止顯示警告。我很抱歉浪費任何人的時間。