我已经成功编写了一个函数,它将空格分隔的整数字符串转换为Clojure中的整数向量,但由于我(非常)新的函数式语言,我担心我仍然在考虑程序性.
该函数用于split对字符串进行标记,然后迭代通过返回的向量,将标记单独转换为整数,然后将它们附加到新向量.我正在使用,read-string因为输入是自我提供的,我并不真正关心安全性.
(defn parser [myStr]
;;counter
(def i 0)
;;tokenizes string and returns vector of tokens
(def buffer (clojure.string/split myStr #"\s"))
;;reads vector of strings as integers then appends them to a new vector x
(def x (vector-of :int))
(while ( < i (count buffer))
(def x (conj x (read-string (nth buffer i))))
(def i (inc i)))
(println x))
Run Code Online (Sandbox Code Playgroud)
我的代码有效,但我担心通过改变状态并迭代缓冲向量,我有点作弊并坚持我的程序根源.
是否有更优雅或功能性的方法来解决这个问题?