我试图解析一个文件并使用每一行来执行任意数量的函数和参数。我想调用的函数接受两个用于矩阵乘法的整数向量向量。我能够将参数解析为一个向量,这样我就可以对它调用 apply 和解析的函数符号。但是我仍然需要将参数从字符串转换为适当的类型。我怎样才能做到这一点?
函数头示例:
(defn ijk [[& matrixA] [& matrixB]]
...
)
输入文件示例:(用逗号分割字符串)
ijk,[[1 2] [3 4]],[[1 2] [3 4]]
kij,[[2 2] [3 4]],[[1 2] [3 4]]
到目前为止我是如何阅读文件的:
(defn get-lines [fname]
(with-open [r (reader fname)]
(loop [file (line-seq r)]
(if-let [[line & file] file]
(do (let [[command & args] (str/split line #",")]
;apply (resolve (symbol command)) (vec args))
)
(recur file))
file))))
(vec args) 的格式:
[[[1 2] [3 4]] [[1 2] [3 4]]]
[[[2 2] [3 4]] [[1 2] [3 4]]]
我需要将 args 向量中的每个矩阵转换为上述整数向量的向量。这个 Clojure 菜鸟非常感谢任何和所有帮助!
您可以使用clojure.edn/read-string
将字符串解析为数据结构:
(def args ["[[1 2] [3 4]]"
"[[1 2] [3 4]]"])
(mapv clojure.edn/read-string args)
=> [[[1 2] [3 4]] [[1 2] [3 4]]]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句