我想使用一个数据结构的记录,要求其类型具有默认构造函数。不幸的是,这会导致编译时错误。
除了改变数据结构(这里不可能)。或者将记录更改为某种类型(需要在哪里添加类型注释)在这种情况下您有哪些选项?
我想可以将记录包装在一个结构中,但这就像黑客一样。
答案 0 :(得分:7)
这似乎已在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,但是public pre-release was earlier this week)
答案 1 :(得分:4)
尝试将CLIMutable属性添加到记录中。