这是我的解决方案。
如果你看看(slurp "integers.txt")
的结果,那将只是一个字符串。因此需要将其切分。
为此,我们将需要一些字符串函数,因此
(require '[clojure.string :as str])
让我们看看我们可以使用什么
(dir str)
blank?
capitalize
ends-with?
escape
includes?
index-of
join
last-index-of
lower-case
re-quote-replacement
replace
replace-first
reverse
split
split-lines
starts-with?
trim
trim-newline
triml
trimr
upper-case
nil
split-lines看起来很有用。
(doc str/split-lines)
-------------------------
clojure.string/split-lines
([s])
Splits s on \n or \r\n.
所以(str/split-lines "1\n2\n")应该返回一个由("1" "2")组成的序列,我们离目标不远了。为了找到如何处理数组,我们可以查询我们的repl
(apropos "array")返回了很多东西,但是我注意到clojure.core/int-array。
调用(doc int-array)
clojure.core/int-array
([size-or-seq] [size init-val-or-seq])
Creates an array of ints
第一个参数“size-or-seq”表示我们可以将一个集合作为数组的元素传入。在分隔字符串之后,我们得到一个字符串集合,如果我们可以将它们转换为整数,我认为问题就解决了。
将一个集合的元素转换成另一集合的方式可以使用map。从字符串解析整数的函数是Integer/parseInt。
将整个流程结合起来
(int-array (map #(Integer/parseInt %) (str/split-lines s)))