Dan*_*iel 7 enums f# constants
这个C#的F#等价物是什么:
const MyEnum None = (MyEnum)1;
Run Code Online (Sandbox Code Playgroud)
这不起作用:
[<Literal>]
let None : MyEnum = enum 1 //ERROR: not a valid constant expression
Run Code Online (Sandbox Code Playgroud)
虽然,奇怪的是,在属性构造函数中它是可以的:
[<MyAttribute(enum 1)>]
type T = class end
Run Code Online (Sandbox Code Playgroud)
这种差异似乎很奇怪.
这在v3.1中得到修复,并按预期工作.
造成这种差异的原因是,C#确实(MyEnum)0 是一个文字,但 F#enum是一个类型为 的函数int32 -> 'T。
我相信 F# 团队为这个构造添加特殊处理并不困难,但遗憾的是目前还没有。
尽管如此,有一种方法可以实现您所需要的,但只是为了0价值:
type MyEnum =
| None = 0
| Foo = 1
[<Literal>]
let X = MyEnum()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
480 次 |
| 最近记录: |