gpt4 book ai didi

f# - 在 F# 中实现 ThreadStatic 单例

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

我正在学习 F#,想实现 ThreadStatic 单例。我正在使用我在类似问题中找到的内容:F# How to implement Singleton Pattern (syntax)

使用以下代码,编译器会提示类型“MySingleton”没有“null”作为正确的值

type MySingleton = 
private new () = {}
[<ThreadStatic>] [<DefaultValue>] static val mutable private instance:MySingleton
static member Instance =
match MySingleton.instance with
| null -> MySingleton.instance <- new MySingleton()
| _ -> ()
MySingleton.instance

在这种情况下我如何初始化实例?

最佳答案

我认为[<ThreadStatic>]导致代码相当笨重,尤其是在 F# 中。有多种方法可以更简洁地执行此操作,例如使用 ThreadLocal :

open System.Threading

type MySingleton private () =
static let instance = new ThreadLocal<_>(fun () -> MySingleton())
static member Instance = instance.Value

关于f# - 在 F# 中实现 ThreadStatic 单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13308090/

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