我在如何构建我的软件的特定部分时遇到了问题。可以说,我有一个名为make-temp-dir
(和许多其他)的函数,它根据当前的操作系统执行一些黑魔法。我希望能够将每个操作系统的这些方法的实现放在单独的命名空间中。
首先,我相信协议(如果可能的话)或多方法是解决这个问题的方法。但是,我从未见过将这些与跨越多个命名空间的实现一起使用的示例。而且我无法弄清楚这是如何解决的。
其次,如果我为此使用协议,我将不得不调用类似的方法
(make-temp-dir current-os arg-1 arg-2)
不知何故,一直将 os 作为第一个参数传递对我来说看起来不太好。出于语义make-temp-dir
考虑,我希望根据操作系统做出明智的决定。当然我可以使用一些宏并做类似的事情
(doto current-os
(make-temp-dir arg-1 arg2))
但这感觉不对。
这应该怎么做?还是我走错路了?任何帮助表示赞赏。
编辑:好的,非常感谢@kotarak,我设法得到了一些工作。对于任何偶然发现的人,https ://gist.github.com/2477120 。它工作正常,我想我会去的。谢谢大家。