【发布时间】:2014-04-13 07:15:35
【问题描述】:
以下两个函数都返回相同的输出,但第一个函数使用 reduce 和一对引号来实现相同的目的。我玩过这段代码,如果你删除"" 标记,序列中的第一个字符不会从它的整数值转换。第二种对我来说似乎很清楚,但我觉得第一种方法更好,因为它将所有想要的效果打包到一个函数文字中。有人可以为我解压缩匿名函数来解释% 和%2 指的是什么变量,并告诉我为什么我们只需要向量中的第一个整数(115)使用""?
(reduce #(str % (char %2)) ""
[115 101 99 114 101 116 32 109 101 115 115 97 103 101 115])
(apply str (map #(char %) [115 101 99 114 101 116 32 109 101 115 115 97 103 101 115]))
第一个函数取自 Clojure Cookbook 关于int 到str 转换、here 的讨论。
【问题讨论】:
-
仅供参考
#(char %)在行为上与char相同,但由于额外的间接性可能会更慢。
标签: string clojure char apply reduce