F# 3.0 的重大變更
本主題說明F# 編譯器的 3.0 版和語言重大的變更 Visual Studio 2012。
中斷變更的清單。
下表列出 F# 3.0 的重大變更。
中斷變更範圍 |
描述 |
---|---|
縮排 |
F# 舊版編譯器錯誤地接收某些無效的縮排會在目前版本產生編譯錯誤。如需縮排規則的完整說明,請參閱 程式碼格式化方針 (F#)。 |
引號、方法和結構的屬性為區域變數。 |
而該結構是區域變數時,若其屬性或方法在引號中就是一個錯誤。F# 的舊版允許這個行為。
在這個需求。若要解決,請建立區域變數的複本,,如下列範例所示:
|
相等的不適當 Null |
在舊版中,您可以比較 Null 值使用"="運算子不論是否為型別的適當或不正確的值。一個適當的 null 是型別允許 null 值,一個不適當的 null 不是這個型別的有效值。目前的行為會回傳 NullReferenceException ,當您嘗試使用"="運算子去比較不適當的null,如下列程式碼所示。
|
註解和字串 |
在舊版中,一個右邊的註解語彙基元*) 在使用""") 的三個以引號括住的字串會被剖析成字串的一部分。在目前的版本中,這個語彙基元剖析成結尾註解字元。因此,下列程式碼,以前被接受,會導致目前版本的錯誤:
如需詳細資訊,請參閱字串 (F#)。 |
具有不同的 getter 和 setter 型別的屬性。 |
在 F# 中的舊版中,有一些 F# 編譯器不正確地允許的 getter 和 setter 的方法 (例如: 沒有相符的型別,int型別的getter和string型別的 setter。在 F# 3.0,則編譯器會回報宣告這類錯誤。 |