是否可以在 F# 中声明抽象自动实现属性?

发布于 2024-12-12 02:51:58 字数 236 浏览 0 评论 0原文

我正在尝试执行以下 F# 等效操作:

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

但是此代码(以及许多其他组合)不起作用:

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

I'm trying to do the following F# equivalent:

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

But this code (and many other combinations) does not work:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

岁吢 2024-12-19 02:51:58

在 Dev11 预览版中这是不可能的。

It's not possible in the Dev11 preview.

贩梦商人 2024-12-19 02:51:58

好的,查看关于 F# 属性的 MSDN 文档,这一行位于抽象属性立即跳出:

或者,抽象可以仅仅意味着属性是虚拟的,并且
在这种情况下,同一个类中必须存在定义。

他们给出的示例语法是:

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< /代码>

Ok, looking at the MSDN documentation on F# properties, this line in the abstract properties immediately jumps out:

Alternatively, abstract can just mean that a property is virtual, and
in that case, a definition must be present in the same class.

The example syntax they give is:

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

Now I'm not overly familiar with F#, but my guess is that you could set let mutable value = 10 to your requirement of let mutable value = 123

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文