Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
interpose和clojure.string/join之间有什么区别?_Clojure - Fatal编程技术网

interpose和clojure.string/join之间有什么区别?

interpose和clojure.string/join之间有什么区别?,clojure,Clojure,可以说clojure.string/join是专门用于字符串的interpos函数吗?这些功能之间有什么区别吗 从概念上讲,它们基本相同。它们各自获取一个集合*和一个分隔符,并返回一个集合,其中分隔符位于原始集合的每个元素之间。它们之间的主要区别是: clojure.string/join调用分隔符上的toString和集合的每个元素,并使用StringBuilder构造字符串 插入不会影响分隔符或集合元素,并返回一个惰性列表*,而不是完全实现的字符串。它的定义是交织: (drop 1 (in

可以说clojure.string/join是专门用于字符串的interpos函数吗?这些功能之间有什么区别吗

从概念上讲,它们基本相同。它们各自获取一个集合*和一个分隔符,并返回一个集合,其中分隔符位于原始集合的每个元素之间。它们之间的主要区别是:

  • clojure.string/join
    调用分隔符上的
    toString
    和集合的每个元素,并使用
    StringBuilder
    构造字符串
  • 插入
    不会影响分隔符或集合元素,并返回一个惰性列表*,而不是完全实现的字符串。它的定义是交织:

    (drop 1 (interleave (repeat sep) coll))
    
类似的概念,但实现非常不同


*我忽略了interpose的no coll版本,它返回一个传感器。

你的直觉是正确的。请注意,
插入
也可以返回传感器,并且是惰性的

只需查看docstring或源代码:

(doc interpose)
(source interpose)

介入

Interpose接受一个分隔符和序列,它通过在序列元素之间添加分隔符来返回一个惰性序列

user=> (interpose "-" (list "a" "b" "c"))
("a" "-" "b" "-" "c")
user=> (type (interpose "-" (list "a" "b" "c")))
clojure.lang.LazySeq
加入

Join接受分隔符和序列,并通过将元素和分隔符连接在一起返回字符串

user=> (clojure.string/join "-" (list "a" "b" "c"))
"a-b-c"
user=> (type (clojure.string/join "-" (list "a" "b" "c")))
java.lang.String