gpt4 book ai didi

c# - 如何在 C# 中编写一个看起来像 A(key, B(key, C(key, ValFactory(key)))) 的递归函数?

转载 作者:行者123 更新时间:2023-11-30 17:56:39 26 4
gpt4 key购买 nike

如何编写具有这种形式的函数:

A(key, B(key, C(key, ValFactory(key))))

其中 A、B 和 C 具有此签名:

TResult GetOrAdd(string key, Func<string, TResult> generator);

Valfactory 有签名:

TResult Get(string key);

顺便说一句,“链接”函数的数量没有限制,因此它可以是 A、B 或 A、B、C 或 A、B、C、D、E 等。

我将函数 A、B、C 等存储在一个 LinkedList 中

我该如何调用它们?

编辑 添加一些信息以进行说明:

我需要它来实现多级缓存。有几种不同的缓存都实现了“GetOrAdd”功能。一级缓存只是一个已经具有 GetOrAdd 函数的 ConcurrentDictionary。

缓存的工作方式是,如果一级缓存没有特定键的条目,它会尝试在二级缓存中查找。二级缓存在未命中等情况下查看三级缓存。

任何缓存都不应该知道另一个缓存,它应该只实现签名 TResult GetOrAdd(string, Func<string, TResult> functionToCallOnCacheMiss)

最佳答案

如果您将每个 Func 存储在一个链表中,为什么不直接遍历该列表并使用先前的结果调用下一个 func?

关于c# - 如何在 C# 中编写一个看起来像 A(key, B(key, C(key, ValFactory(key)))) 的递归函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13983247/

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