爲什麼這個F#類不編譯(與VS2010):與用於F#類tupled參數的默認方法
type Base =
abstract func : (int * int) -> int
default this.func (x : int, y : int) : int =
x + y
FUNC的默認實現導致此編譯錯誤:
Error 9 This override takes a different number of arguments to the corresponding abstract member
如果我改變它是一個成員:
type Base =
abstract func : (int * int) -> int
member this.func (x : int, y : int) : int =
x + y
然後編譯(雖然我相信現在抽象的func沒有實現),第二個func的類型與第一個匹配。
在相關說明中,爲什麼編譯器不要求Base的第二個定義具有AbstractClass屬性?
你問:「爲什麼**不**編譯器需要第二定義有一個AbstractClass屬性?「 - 當我測試這個時,編譯器**確實需要這個屬性。你使用的是什麼版本的編譯器? – wmeyer 2011-04-29 16:02:26
@wmeyer:你說得對。由於我測試上述代碼的文件有進一步的錯誤,因此intellisense沒有突出顯示缺少AbstractClass屬性作爲錯誤。 – 2011-04-29 16:13:30