请考虑下面的记录定义:F#记录:字段名称相同
type A = { F1 : int; F2 : int }
type B = { F1 : int; F3 : int }
// error FS0656: This record contains fields from inconsistent types
let a1 = { F1 = 1; F2 = 2 }
// this works
let a2 = { A.F1 = 1; F2 = 2 }
我不明白,为什么在一个错误A1的结果。
我可以找到所有的例子,为什么你必须这样做,A2方式假设A和B中的所有字段名称具有相同的名称 - 这当然是模棱两可的,但不应该A和B至少有一个不同的字段时可以区分吗?
也许这只是F#评估的方式,并将类型名称添加到第一个字段当然没有什么大不了的,但我只是好奇。
编辑: 感谢您的回答,帮助我注意到一些相当奇怪的事情:当我第一次评估它时,整个代码段工作正常(ALT + Enter in VS 2010)。
当我第二次尝试评估时,出现错误。
如果没有人能重现此我VS的安装可能borked ...
EDIT2(好吧,时间在这里创建一个帐户,用于编辑抱歉) 感谢wmeyer(和其他人)抽出有时间研究这个问题,并让我意识到我对FSI的工作原理的误解。现在都清理了!