解决一个4 4Clojure问题时,我得到了这个答案来压缩序列(问题30):
#(map first (partition-by identity %))用简单的数字来做这项工作,最好的方法是什么?
我的解决办法是:
(defmulti comp class)
(defmethod comp java.lang.Long [x] x)
(defmethod comp :default [x] (map first (partition-by identity %)))代码增加了两倍多。有没有更好的解决办法?更短?更惯用吗?我尝试用java.lang.Long扩展ISeqable,但失败了。
发布于 2015-11-03 19:56:08
不错的解决方案。您的解决方案已经非常适合于数字序列(以及更多)。comp多方法不是一个好主意。它是一个函数,它可以接受一个seq或一个数字。您应该避免创建使用不同类型的参数的函数(这会让人感到困惑,并建议您最好使用2个函数或协议),除非有一个很好的理由。在这种情况下,comp没有添加任何有用的东西(为什么要添加它?)您有用例吗?)
https://codereview.stackexchange.com/questions/109438
复制相似问题