我在F#中有一个界面
type IStongList =
abstract member ToStringList: float * float list
我在制作浮动,浮动元组列表时遇到了麻烦。
type MyTypw = struct
val L1: float
val L2: float
val M1: float
val M2: float
// . . .
interface IStrongList with
member this.ToStrongList =
let one: float * float = (this.L1,this.M1)
let two: float * float = (this.L2,this.M2)
[
one
two
]
end
我得到的错误是:
This expression was expected to have type
float * float list
but here has type
'a list
我做错了什么?
答案 0 :(得分:5)
float * float list
是由float
和float list
组成的元组,不是由两个float
组成的元组列表。为此,您应该使用(float * float) list
:
type IStrongList =
abstract member ToStrongList: (float * float) list
如果您更改此界面,其余代码将正常运行。
您的代码中也存在一些拼写错误(IStongList
→IStrongList
和ToStringList
→ToStrongList
),但我会将这些错误归结为抄写错误。
答案 1 :(得分:3)
问题不在于您的实现,而在于接口声明本身。
float * float list
表示float
和float list
的元组。要获取float
和float
的元组列表,您需要(float * float) list
:
type IStongList =
abstract member ToStringList: (float * float) list