F # Синтаксис ярлыка для свойств? - PullRequest
27 голосов
/ 12 октября 2010

Для нормального свойства getter / setter синтаксис

let mutable myInternalValue

member this.MyProperty 
    with get() = myInternalValue
    and set(value) = myInternalValue <- value

есть ли ярлык, похожий на следующий в C #?

someType MyProperty { get; set; }

Если есть, кажется, я не могу его найти ...

Ответы [ 3 ]

51 голосов
/ 09 марта 2013

F # 3 имеет автоматически реализуемые свойства , поэтому вы можете объявлять свойства без объявления вспомогательного поля.

Пример взят из Свойства (F #) в MSDN:

type MyClass() =
    member val MyProperty = "" with get, set
11 голосов
/ 12 октября 2010

В F # нет ярлыка для создания свойства get / set, но если вам нужно свойство только с get, вы можете использовать следующий простой синтаксис:

type Test(n) =
  let myValue = n * 2
  member x.Property = 
    // Evaluated each time you access property value
    myValue + 5

, так как F #является функциональным языком, типы F # очень часто неизменяемы.Этот синтаксис позволяет очень легко определять неизменяемые типы, поэтому он также рекомендует использовать хороший функциональный стиль программирования в F #.

Однако я согласен, что ярлык для свойства get / set будеточень полезно, особенно при написании кода, который должен взаимодействовать с C # / другими библиотеками .NET.

EDIT (5 лет спустя ...): это было добавлено в F # 3.0,как показывает ответ Бена: -)

2 голосов
/ 12 октября 2010

есть ли ярлык, похожий на следующий в C #?

Я так не думаю (ничего не показано в сводке синтаксиса "Expert F #") и F #синтаксис уже довольно короткий по сравнению с полным синтаксисом, необходимым в C #.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...