2

我想使用具有数据结构的记录,该数据结构要求其类型具有默认构造函数。不幸的是,这会导致编译时错误。

除了改变数据结构(这里不可能)。或者将记录更改为一种类型(需要在任何地方添加类型注释)在这种情况下您有哪些选择?

我想人们可以将记录包装在一个结构中,但这感觉就像黑客。

4

2 回答 2

7

尝试将CLIMutable属性添加到您的记录中。

于 2013-06-27T20:03:48.003 回答
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,但本周早些时候公开预发布

于 2013-06-28T20:26:46.347 回答