我不确定是否允许非静态公共成员活动模式,但您可以定义它们而不会引起编译器的抱怨。如果允许的话,匹配的语法是什么?编译器给我 FooBar2.doSomething 中的 Foo 类型不匹配。期待一个'a -> Choice<'b,'c>
given 'a -> 'd -> Choice<unit,unit>
// No error in this class, static works great
type FooBar() =
static member (|Foo|Bar|) (x, y) =
match x = y with
| true -> Foo
| false -> Bar
member x.doSomething y =
match x, y with
| Foo -> ()
| Bar -> ()
type FooBar2() =
member x.(|Foo|Bar|) y =
match x = y with
| true -> Foo
| false -> Bar
// compiler error on "Foo"
member x.doSomething y =
match y with
| Foo -> ()
| Bar -> ()
活动模式不应用作成员。事实上,这些编译器完全是一个编译器错误,我们将修复该错误(感谢您的报告:))。使用本地或模块绑定的“let”来定义活动模式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)