我有以下签名文件F.fsi
:
module M =
type T1 = A | B
type T2 =
| F
| G
static member x1 : list<T1>
static member x2 : list<T1>
在我的实施文件F.fs
中,我有以下内容:
module M =
type T1 = A | B
type T2 =
| F
| G
static member x1 = [T1.A; T1.B]
static member x2 = [] // LINE MARKER 1; ERROR OCCURS HERE
Visual Studio使用以下错误消息对x2
的定义进行红线处理:
模块'M'包含
static member M.T2.x2 : obj list
但它的签名 指定static member M.T2.x2 : T1 list
类型不同
似乎在实现文件中,空列表被推断为具有泛型类型,即使签名文件清楚地指示列表是T1
类型。我尝试了以下更正:
static member (x2 : list<T1>) : []
但这次我收到以下错误消息:
只能在
中绑定简单的变量模式let rec
构造
我通过将x1
和x2
改为函数来解决问题,但是有不同的方法让Visual Studio正确推断列表的类型吗?
答案 0 :(得分:7)
注释应该是
module M =
type T1 = A | B
type T2 =
| F
| G
static member x1 = [T1.A; T1.B]
static member x2 : List<T1> = []
因为您正在注释返回类型