gpt4 book ai didi

f# - 同时使用构建器类的相同实例是否会引起任何副作用?

转载 作者:行者123 更新时间:2023-12-04 13:48:24 24 4
gpt4 key购买 nike

我想在旨在用于C#消费的F#类的实现内使用计算表达式。互操作类本身是一个单例(在容器中连接了一个实例),并且在线程(Web请求)中使用。

构建器本身仅由方法组成,没有后备字段或状态。

鉴于以下是F#中的习惯:

module A = 
let private build = new SomeBuilder()

这是否意味着可以毫无问题地同时评估与一个生成器关联的多个表达式?

最佳答案

在后台,构建器根本不“起作用”。编译器只是将计算表达式转换为生成器上的一系列方法调用,然后进行编译。

因此,构建器的线程安全性完全取决于其方法(即您编写的方法)的线程安全性。

例如,以下代码:

myBuilder {
let! x = f()
let! y = g(x)
return x + y
}

将被转换为以下内容:
myBuilder.Bind( f(), fun x -> 
myBuilder.Bind( g(x), fun y ->
myBuilder.Return( x + y ) ) )

(注意:以上代码可能不准确,但传达了要点)

关于f# - 同时使用构建器类的相同实例是否会引起任何副作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35227388/

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