2010-09-18 163 views
5

編譯F#時,有時會出現煩人的模式匹配和縮進警告。有沒有辦法禁用警告?我非常強調警告。F#抑制警告

+0

也許解決的警告? :) – ChaosPandion 2010-09-18 18:26:00

+1

我會非常小心關閉模式匹配警告。考慮到F#語法可以使用縮進來確定範圍,我不會忽略這些警告 - 我試圖理解它們。 – 2010-09-19 16:06:12

+2

有沒有辦法在每個實例的基礎上做到這一點?有幾次我知道編譯器不知道的事情,例如,正則表達式匹配會產生的組數。 – gatoatigrado 2010-10-10 01:26:50

回答

7

如果你忘了,你可以鍵入

let rec x = lazy(x.Value) 

,並得到警告

這和其他遞歸引用 對象(S)被定義爲 在運行時通過使用 延遲引用檢查初始化 - 健全性 。這是因爲你的 定義了一個或多個遞歸的 對象,而不是遞歸的 函數。此警告可能是 通過使用'#nowarn'40''或 ' - 現在:40'被抑制。

這表明您可以使用該編譯器標誌--nowarn在命令行,或在代碼中使用哈希指令#nowarn。每個警告的警告編號將成爲構建輸出的一部分(Visual Studio錯誤列表不顯示數字,因此如果在VS中,則編譯並檢查構建輸出)。此外,如果在VS中,可以進入項目屬性頁面的「Build」選項卡,並使用「warning level」選擇器和「suppress warnings」字段(以分號分隔的數字列表)來控制哪些警告是通過diplayed VS UI。

(順便說一句,我相信#nowarn只關閉當前文件中警告,而--nowarn關閉它爲整個項目被編譯。)

+0

好答案Brian – 2014-11-21 22:05:27