f# - v3.1中命名联合字段的编译形式

标签 f# discriminated-union f#-3.1

首先,F# 3.1 规范是否在线可用?如果是这样,这个问题的答案应该很容易找到。

我想知道是否带有 named fields 的歧视联合的编译形式(在 3.1 中添加)将包含带有字段名称的属性,而不是通常的 Item1 , Item2 , ... 特性。

最佳答案

据我所知,该规范尚不可用,因此唯一的判断方法就是尝试一下。
我安装了 VS 2013 RC,所以我想我可以使用这个联合检查:

type Expression = 
  | Add of Left:Expression * Right:Expression
  | Constant of number:int

正如预期的那样,它确实生成了命名属性,这些属性可以很好地从 C# 中使用:

enter image description here

事实上,它也在构造函数的参数中使用了名称:

enter image description here

如果您将它们用于 C# 互操作性,那么您可能希望在 PascalCase 中编写联合成员名称。 ,因为如果您使用小写名称,编译器不会自动将属性名称大写(但有趣的是,它确实为参数使用了小写名称)。

关于f# - v3.1中命名联合字段的编译形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18723445/

相关文章:

f# - 功能增量

excel - 使用 Excel 在 F# 中绘图

f# - 复制联合案例但在 F# 中具有不同的值

visual-studio-2013 - 如何制作在 VS2010/VS2013-preview 上同样工作的 F# 项目?

f# - 同名的模块和类

.net - 当成员签名具有 F# 中的类型变量时,成员约束调用表达式出现问题

f# - 该表达式原本应具有 bool 类型,但此处存在类型 unit 错误

f# - 单一值(value)观歧视工会?

f# - 如何使用FsUnit检查歧视工会的情况?