У меня есть следующий ввод:
(def nums [123456789012 123456789012])
Я бы хотел следующий вывод:
[[1234 5678 9012] [1234 5678 9012]]
* обратите внимание, что обе эти последовательности содержат числа, а не строки ...
Я подумал, что это было бы действительно просто сделать следующее:
- Конвертировать каждую запись в строку
- Разделить каждую строку на 4
- Преобразовать каждый раздел обратно в целое число
Вот моя неудачная попытка:
(defn split-nums [nums factor]
(map
#(map
(fn [x] (Integer/valueOf (str x)))
(partition factor (str %)))
nums))
(println (split-nums nums, 4))
Когда я запускаю это, я получаю следующую ошибку:
Caused by: java.lang.NumberFormatException: For input string: "clojure.lang.LazySeq@4834333c"
Что говорит мне, что я имею дело с ленивой последовательностью, для которой мне нужно форсировать оценку, но когда я пытаюсь (str (doall x)), я получаю тот же результат.
Так что, эксперты, сомневаюсь, где я ошибаюсь? Это хороший подход? КСТАТИ. Я только начал изучать clojure, поэтому я, конечно, не эксперт.