gpt4 book ai didi

design-patterns - 在 Clojure 中实现撤消/重做的模式

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

是否存在用于在 clojure 或 fp 中实现撤消/重做功能的既定模式?

在面向对象语言中,我会使用命令模式,但因为它完全与状态有关,所以我想知道在 clojure 中这样做是否符合习惯。

是否有任何可以提供帮助的图书馆?

最佳答案

与许多设计模式一样,您可以将这一模式实现为 clojure 中的函数。这在一定程度上取决于您如何在程序中表示状态(引用、原子、代理),整个过程非常相似。

您只需向您的状态代理/引用/原子添加一个观察器函数,以便在每次更新时将状态添加到撤消列表中。那么你的撤消功能只是在撤消列表中查找它。这具有将您的添加到撤消列表的良好效果,也允许重做

我的第一印象是 ref 可能是正确的工具,因为您将能够以协调的方式恢复它们,当然除非您可以将程序状态减少到单一身份(在 Clojure 意义上)那么您不需要协调更新并且代理就可以工作。

关于design-patterns - 在 Clojure 中实现撤消/重做的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9847245/

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