我想使用具有数据结构的记录,该数据结构要求其类型具有默认构造函数。不幸的是,这会导致编译时错误。
除了改变数据结构(这里不可能)。或者将记录更改为一种类型(需要在任何地方添加类型注释)在这种情况下您有哪些选择?
我想人们可以将记录包装在一个结构中,但这感觉就像黑客。
我想使用具有数据结构的记录,该数据结构要求其类型具有默认构造函数。不幸的是,这会导致编译时错误。
除了改变数据结构(这里不可能)。或者将记录更改为一种类型(需要在任何地方添加类型注释)在这种情况下您有哪些选择?
我想人们可以将记录包装在一个结构中,但这感觉就像黑客。
尝试将CLIMutable属性添加到您的记录中。
这似乎已在 F# 3.1 中修复。考虑这段代码:
[<CLIMutable>]
type R = {a : int}
let f<'a when 'a : (new : unit -> 'a)>() = new 'a()
let r = f<R>()
在 F# 3.0 (VS 2012) 中,最后一行出现错误 -error FS0001: A generic construct requires that the type 'R' have a public default constructor
但它适用于 F# 3.1(还不是 RTM,但本周早些时候公开预发布)