gpt4 book ai didi

F# 事件模式作为非静态成员

转载 作者:行者123 更新时间:2023-12-04 23:10:30 27 4
gpt4 key购买 nike

我不确定是否允许非静态公共(public)成员事件模式,但您可以在编译器不提示的情况下定义它们。如果他们被允许,匹配一个的语法是什么?编译器给了我 FooBar2.doSomething 中 Foo 的类型不匹配。期待 'a -> Choice<'b,'c>给定 '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 -> ()

最佳答案

不应将事件模式用作成员。这些完全编译的事实是我们将修复的编译器错误(感谢报告:))。使用本地或模块绑定(bind)的“let”来定义事件模式。

关于F# 事件模式作为非静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1830548/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com