Подтвердить что ты не робот

Синтаксис ярлыка F # для свойств?

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

let mutable myInternalValue

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

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

someType MyProperty { get; set; }

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

4b9b3361

Ответ 1

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

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

type MyClass() =
    member val MyProperty = "" with get, set

Ответ 2

Не существует ярлыка для создания свойства get/set в F #, но если вы хотите свойство с помощью всего лишь 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 был бы очень полезен, особенно при написании кода, который должен взаимодействовать с С#/другими библиотеками .NET.

РЕДАКТИРОВАТЬ (5 лет спустя...): Это было добавлено в F # 3.0, так как ответ Бен показывает: -)

Ответ 3

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

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