我的担忧,与其说是由于开发者的失误导致的意外泄漏,不如说是关于允许(可能恶意或高度随机的)用户输入击中多方法所可能引起实际问题的实质性。
我相信大多数Clojure程序员都非常小心,并且如果明确表明这种缓存正在进行,那么人们就会三思而后行关于保留`:default`方法或寻找关闭多方法输入的其他方式 - 但并不明显。我已经专业使用Clojure多年了,但不知道`:default`匹配是被缓存的。
例如,memoize将引起类似的问题,但我觉得在那个情况下(你可能认为这是显而易见的),而多方法(multi-methods)对我来说则有些微妙。
我不知道是否有解决方案,当然,快速是很重要的,而且在几乎所有的情况下,我都确信它是没有问题的。