gpt4 book ai didi

f# - 在匹配语句中使用自定义计算表达式运算符

转载 作者:行者123 更新时间:2023-12-01 05:00:41 25 4
gpt4 key购买 nike

现在我正在试验 F# 计算表达式。总体思路是返回控制机制来驱动从计算表达式构建的递归函数调用的每一步之后执行的 Action 。可以看到整个例子here .

使用以下示例:

let rec loop () =
actor {
let! msg = m.Receive ()
match msg with
| "stop" -> return 0 // expected result: Return (0)
| "unhandled" -> unhandled // expected result: Unhandled
| x ->
mailbox.Sender() <! x
return! loop () // expected result: (Become(fun m -> loop ()))
}
loop ()

不幸的是,这以 unhandled 上的编译时错误结束。 :自定义操作不能与此计算表达式中的“use”、“try/with”、“try/finally”、“if/then/else”或“match”运算符结合使用。

是否可以在匹配语句中以任何方式使用自定义运算符?

最佳答案

我不确定actor的详细信息是什么计算是,但如果 Unhandled是底层计算类型的值,您当然可以使用 return! 生成它

在不知道细节的情况下,我认为这样的事情应该可行:

match msg with
| "stop" -> return 0
| "unhandled" -> return! Unhandled
| x ->
mailbox.Sender() <! x
return! loop ()

关于f# - 在匹配语句中使用自定义计算表达式运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33069428/

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