Почему этот класс F # не компилируется (с VS2010):
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
Затем он компилируется (хотя я полагаю, что теперь у абстрактного функционала отсутствует реализация), и тип второго функционала совпадает с первым.
В соответствующем примечании почемуРазве компилятору не требуется, чтобы второе определение Base имело атрибут AbstractClass?