gpt4 book ai didi

模式匹配中的 F# 惯用转换?

转载 作者:行者123 更新时间:2023-12-02 04:38:36 26 4
gpt4 key购买 nike

假设以下代码:

override x.OnReceive message =
match message with
| :? SomeActorMessages as m ->
match m with
| Greet(name) -> Console.WriteLine("Hello {0}",name)
| Hi -> Console.WriteLine("Hello from F#!")
| _ -> failwith "unknown message"

其中“消息”是 System.Object 类型为了使模式匹配更好,我能做些什么吗?例如一些通用的事件模式或一些类似的?

也许这个问题太短了,但我只是想看看有没有办法让上面的语法更好

最佳答案

您需要一个单独的函数来进行类型转换。

let someActorMessages message =
match box message with
| :? SomeActorMessages as m -> m
| _ -> failwith "unknown message"

override x.OnReceive message =
match someActorMessages message with ...

该函数也可以写成单个案例事件模式。

let (|SomeActorMessages|) message =
...

override x.OnReceive (SomeActorMessages message) =
match message with ...

关于模式匹配中的 F# 惯用转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21373795/

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