小编Gho*_*ack的帖子

类型定义中的Seq约束

此类型定义有效:

type Model<'t,'u when 't :> seq<'u> >(query: unit -> 't) = class end
Run Code Online (Sandbox Code Playgroud)

但是,对我来说,'u这里是多余的,但下一个定义是:

type Model<'t when 't :> seq<_> >(query: unit -> 't) = class end
Run Code Online (Sandbox Code Playgroud)

产生错误:

此声明中不允许使用匿名类型变量- F# Compiler (715)

紧凑

最紧凑的形式:

type Model<'t>(query:unit -> #seq<'t>) = class end
Run Code Online (Sandbox Code Playgroud)

在实例创建过程中:

Query.users |> Model
Run Code Online (Sandbox Code Playgroud)

产生错误:

类型约束不匹配。类型unit -> (string * int) list
与类型不兼容unit -> 'a
F# Compiler (193)

可能是由于此处所述,为什么记录类型定义中不允许使用灵活类型?。但是无论如何,错误说明对我来说还是不清楚的,用(string * int) list代替代替有'a什么问题?

背景

实类型Model是数据库查询的包装,它实现INotifyPropertyChanged并包含mutable …

f# seq

4
推荐指数
1
解决办法
110
查看次数

标签 统计

f# ×1

seq ×1