获取数字的每个数字并将它们放入序列的惯用方法是什么?
目前我正在做
(map #(Integer/parseInt %) (map str ((comp seq str) 123456)))
,这有点难看......
有什么想法吗?
答案 0 :(得分:6)
(for [n (str 123456)]
(- (byte n) 48))
答案 1 :(得分:4)
我认为用懒惰的顺序写这个很好,即使你实际上不能使用懒惰,因为你是从错误的"端:
(defn digits [x]
(rseq (mapv #(rem % 10)
(->> x
(iterate #(quot % 10))
(take-while pos?)))))
如果你愿意,你可以写一个不使用mapv或rseq的数字*,然后懒惰地按顺序返回数字。
答案 2 :(得分:4)
(map #(Character/getNumericValue %) (str 123456))
答案 3 :(得分:3)
怎么样:
(defn digits
[x]
(if (< x 10)
[x]
(conj (digits (quot x 10))
(rem x 10))))
user=>(digits 123456)
[1 2 3 4 5 6]