我将从使用speclj框架的测试开始。
(it "turns the string into a hash-map"
(should= {1 "1" 2 "2" 3 "3"}
(format-string "1=1 2=2 3=3")))
然后我的代码:
(:use [clojure.string :only (split)])
(defn format-string [string]
(split string #"\s+"))
现在,format-string
函数返回["1=1" "2=2" "3=3"]
并且测试失败。正如您在我的测试中看到的那样,我希望它返回一个带有符号指示的键值对的哈希映射=
。
我已经尝试了一些事情并且我已经接近了,但不太明白如何进行这种转变。
编辑
想出了一种解决方案,尽管键是字符串而不是整数。
我的代码:
(defn format-board [route]
(let [[first second third] (split route #"\s+")]
(merge
(apply hash-map (split-at-equals first))
(apply hash-map (split-at-equals second))
(apply hash-map (split-at-equals third))
这返回{"1" "1" "2" "2" "3" "3"}
。