众所周知,(map f [a b c])
相当于[(f a) (f b) (f c)]
。
我的问题是:(map #(- (int %) (int \0)) "1234")
的评估结果是(1 2 3 4)
,为什么它会将#(- (int %) (int \0))
的结果应用于“1234”的每个数字,而不是字符串“1234” “作为一个整体?我该如何理解这个代码示例?
答案 0 :(得分:4)
map
在第一个之后的所有参数上调用seq
。 seq
将字符串转换为字符序列。
答案 1 :(得分:1)
Clojure可以将字符串视为一系列字符。这很有用,因为您可以:
通过在str
的调用中包装序列操作表达式,必须记住将结果序列放回字符串中,这可能有点烦人。