Можно ли объявить абстрактное автоматически реализованное свойство в F #? - PullRequest
4 голосов
/ 24 октября 2011

Я пытаюсь сделать следующий эквивалент F #:

[C#]
public virtual int Property { get; set; }

Но этот код (и многие другие комбинации) не работают:

[F#]
abstract member Id: int with get, set
default val this.Id = 123 with get, set

Ответы [ 2 ]

5 голосов
/ 24 октября 2011

Это невозможно в предварительном просмотре Dev11.

1 голос
/ 24 октября 2011

Хорошо, глядя на документацию MSDN о свойствах F #, эта строка в абстрактных свойствах сразу же выскакивает:

В качестве альтернативы абстрактный может означать, что свойство является виртуальным, и в этом случае определение должно присутствовать в том же классе.

Пример синтаксиса, который они дают:

type Base1() =
   let mutable value = 10
   abstract Property1 : int with get, set
   default this.Property1 with get() = value and set(v : int) = value <- v

Теперь я не слишком знаком с F #, но я думаю, что вы могли бы установить let mutable value = 10 в соответствии с вашим требованием let mutable value = 123

...