F#中Foo类Yield成员的.fsi签名如何正确定义?
F#计算表达式Yield成员的.fsi签名问题
正确的.fsi文件写法如下:
type Foo() = member Yield: unit -> unit
原因说明
- 你的实现代码
type Foo() = member _.Yield(()) = ()定义了一个带无参构造函数的类,其中Yield是接受unit类型参数的实例成员,签名为unit -> unit。 - 之前你在.fsi中使用
type Foo =(省略构造函数),导致类型定义和实现的类结构不匹配,编译器无法识别对应的实现,因此报错“实现缺失”。 - 若将实现改为无参的
Yield(),该成员不接受任何参数,但计算表达式调用Yield时会自动传入()作为参数,必然触发参数数量不匹配的错误。
内容的提问来源于stack exchange,提问作者capitalistcuttle
相关产品推荐
相关产品推荐

