如何在 F# 中实现返回 void 的接口成员

发布于 2024-09-05 19:36:34 字数 376 浏览 4 评论 0原文

想象一下 C# 中的以下接口:

interface IFoo {
    void Bar();
}

如何在 F# 中实现它?我在 30 分钟的在线搜索中找到的所有示例都仅显示具有返回类型的示例,我认为这在函数式风格中更常见,但在这种情况下我无法避免。

这是我到目前为止所得到的:

type Bar() =
    interface IFoo with
        member this.Bar() =
            void

_FS0010 失败:

表达式_中出现意外的关键字“void”。

Imagine the following interface in C#:

interface IFoo {
    void Bar();
}

How can I implement this in F#? All the examples I've found during 30 minutes of searching online show only examples that have return types which I suppose is more common in a functional style, but something I can't avoid in this instance.

Here's what I have so far:

type Bar() =
    interface IFoo with
        member this.Bar() =
            void

Fails with _FS0010:

Unexpected keyword 'void' in expression_.

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

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

发布评论

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

评论(4

失而复得 2024-09-12 19:36:34

等价的是unit,语法上定义为()

type Bar() =
    interface IFoo with
        member this.Bar () = ()

The equivalent is unit which is syntactically defined as ().

type Bar() =
    interface IFoo with
        member this.Bar () = ()
夜还是长夜 2024-09-12 19:36:34

有关 F# 类型的一般信息,请参阅

F# 类型的基本语法

从该页面:

单位类型只有一个值,写为“()”。它有点像“void”,从某种意义上说,如果您有一个仅调用副作用的函数(例如 printf),那么这样的函数将具有“unit”的返回类型。每个函数都接受一个参数并返回一个结果,因此您使用“unit”来表示参数/结果无趣/无意义。

For general info on F# types, see

The basic syntax of F# - types

From that page:

The unit type has only one value, written "()". It is a little bit like "void", in the sense that if you have a function that you only call for side-effects (e.g. printf), such a function will have a return type of "unit". Every function takes an argument and returns a result, so you use "unit" to signify that the argument/result is uninteresting/meaningless.

油饼 2024-09-12 19:36:34

返回类型必须是 (),所以像 member this.Bar = () 这样的东西应该可以解决问题

The return type needs to be (), so something like member this.Bar = () should do the trick

停顿的约定 2024-09-12 19:36:34

F# 中的等效项是:

type IFoo =
    abstract member Bar: unit -> unit

The equivalent in F# is:

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