当需要在闭包内安装多方法的 method(通常用于生命周期管理)时,使用 defmethod 有点繁琐,并迫使所有
method 体都在闭包内。
以下两种情况我认为尤为相关
如果您需要一个捕获绑定的方法,则需要在 defmethod 中创建一个 bound-fn 并调用它。
在使用依赖注入框架时,您最有可能在依赖项可用时进行方法安装,这使得调用 defmethod 繁琐。
我在 foo.clj 中附加了一个示例,以尝试使事情更加清晰,并添加了一个原始补丁。
在与 @alexmiller 在 #clojure-dev 上讨论事物后,似乎可以添加一个 add-method
函数,并让 defmethod
使用它。