【发布时间】:2018-04-08 19:26:23
【问题描述】:
我是 Clojure 的新手,很难理解向量/列表/映射的操作。我正在尝试打印数据中所有客户的姓名,但我不知道如何。请帮忙。
(def data
"1|John Smith|123 Here Street|456-4567
2|Sue Jones|43 Rose Court Street|345-7867
3|Fan Yuhong|165 Happy Lane|345-4533")
(defn test
[]
(let [lines (str/split-lines data)
line-vecs-1 (mapv #(str/split % #"\|" ) lines)]
(for [x line-vector-c] (print (line-vector-c 1))
)
)
)
给我:
[2 Sue Jones 43 Rose Court Street 345-7867][2 Sue Jones 43 Rose Court Street
345-7867][2 Sue Jones 43 Rose Court Street 345-7867]
我想要什么:
"John Smith"
"Sue Jones"
"Fang Yuhong"
【问题讨论】:
-
你看过所有其他类似的问题吗?看来你们很多人在同一个班或做同样的作业。点击 Clojure 标签,查看问题,因为这基本上已经回答过几次了。
-
line-vector-c未定义。此外,for很懒惰,不推荐用于打印等副作用。请改用doseq。 -
一般来说,最好将数据视为存在于 Clojure 数据结构中,在这种情况下是向量或映射序列。那么问题就分为两个:1. 把数据变成这样的形式;2. 推导出答案。