Clojure - 地图功能

时间:2014-08-04 16:50:28

标签: clojure

众所周知,(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” “作为一个整体?我该如何理解这个代码示例?

2 个答案:

答案 0 :(得分:4)

map在第一个之后的所有参数上调用seqseq将字符串转换为字符序列。

答案 1 :(得分:1)

Clojure可以将字符串视为一系列字符。这很有用,因为您可以:

  • 将字符串映射到字符串
  • 分区字符串
  • 按索引获取地点
  • 做其他所有序列。

通过在str的调用中包装序列操作表达式,必须记住将结果序列放回字符串中,这可能有点烦人。