这里是解决这个问题的方法。
如果您查看 (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" 表示我们可以将集合作为数组的iri_content传递。在字符串分割之后,我们得到了一个字符串集合,如果我们能将这些字符串转换成整数,那么我认为我们就成功了。
将一个集合中的一个东西转换成另一个集合中的东西的一种方法是用 map。从字符串解析整数的方法是 Integer/parseInt。
所以,把它们都放在一起
(int-array (map #(Integer/parseInt %) (str/split-lines s)))