想象一下C#中的以下界面:
interface IFoo {
void Bar();
}
如何在F#中实现此功能?我在网上搜索30分钟时发现的所有示例都只显示了返回类型的示例,我认为这些示例在函数式中更常见,但在这种情况下我无法避免。
这是我到目前为止所拥有的:
type Bar() =
interface IFoo with
member this.Bar() =
void
_FS0010失败:
表达式_中的意外关键字'void'。
答案 0 :(得分:22)
等效单位,在语法上定义为()
。
type Bar() =
interface IFoo with
member this.Bar () = ()
答案 1 :(得分:7)
有关F#类型的一般信息,请参阅
The basic syntax of F# - types
从该页面开始:
单位类型只有一个值,写成“()”。它有点像“void”,在某种意义上说,如果你有一个只调用副作用的函数(例如printf),这样的函数将具有返回类型“unit”。每个函数都接受一个参数并返回一个结果,因此你使用“unit”来表示参数/结果是无趣/无意义的。
答案 2 :(得分:6)
返回类型需要是(),所以像成员this.Bar =()这样的东西应该可以做到这一点
答案 3 :(得分:3)
F#中的等价物是:
type IFoo =
abstract member Bar: unit -> unit