F#属性的快捷语法?

时间:2010-10-12 10:24:00

标签: f#

对于普通属性getter / setter语法

let mutable myInternalValue

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

是否有一个快捷方式,类似于C#中的以下内容?

someType MyProperty { get; set; }

如果有,我似乎无法找到它......

3 个答案:

答案 0 :(得分:51)

F#3具有自动实现的属性,因此您可以在不声明支持字段的情况下声明属性。

从MSDN上的Properties(F#)获取的示例:

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

答案 1 :(得分:11)

在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库进行互操作的代码时。

编辑(5年后......):这已在F#3.0中添加,Ben的答案显示: - )

答案 2 :(得分:2)

  

是否有一个快捷方式,类似于C#中的以下内容?

我不这么认为(在“专家F#”的语法摘要中没有显示),与C#中所需的完整语法相比,F#语法已经相当简短。