【问题标题】:Clojure - Convert string into vector of vector of integersClojure - 将字符串转换为整数向量的向量
【发布时间】:2018-05-13 23:38:23
【问题描述】:

我正在尝试解析一个文件并使用每一行来执行任意数量的函数和参数。我要调用的函数接受两个整数向量向量进行矩阵乘法。我能够将参数解析为一个向量,因此我可以调用它和解析的函数符号。但我仍然需要将参数从字符串转换为适当的类型。我怎样才能做到这一点?

函数头示例:

(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


    【解决方案1】:

    您可以使用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]]]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      • 2011-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-27
      相关资源
      最近更新 更多