有很多协议与多方法比较,但为什么不使用高阶函数呢?让我们举个例子:我们有一些数据(例如记录)。我们有方法serialize和deserialize。假设我们要将其保存到文件、json 和数据库中。我们是否应该创建名为SerializationMethod的协议和名为database、json、文件的记录来实现它们?仅使用协议创建记录看起来有点骇人听闻。第二种解决方案 - 多方法 - 可以采用带有序列化输出的字符串参数并决定如何执行此操作。但我不确定这是正确的方法......第三种方法是编写函数序列化然后传递数据和序列化函数。但现在我不能用相同的名称命名序列化和反序列化方法(json fo 示例):
(defn serialize [method data]
(method data))
(defn json[data]
(...))
问题是我该如何(或应该如何)做到这一点。有没有更高阶函数的更通用的方法?或者,也许我不太了解某些东西?这是我使用clojure的第一步,所以请宽容。