Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/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
如何在Clojure中创建字符串列表?_Clojure - Fatal编程技术网

如何在Clojure中创建字符串列表?

如何在Clojure中创建字符串列表?,clojure,Clojure,我想在Clojure中创建一个字符串列表,相当于以下Java代码: List<String> cities = Arrays.asList(new String[] {"Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris","Stockholm" }); List cities=Arrays.asList(新字符串[]{“柏林”、“布鲁塞尔”、“赫尔辛基”、“马德里”、“奥斯陆”、“巴黎”、“斯德哥尔摩”}); :但

我想在Clojure中创建一个字符串列表,相当于以下Java代码:

List<String> cities = Arrays.asList(new String[] {"Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris","Stockholm" });
List cities=Arrays.asList(新字符串[]{“柏林”、“布鲁塞尔”、“赫尔辛基”、“马德里”、“奥斯陆”、“巴黎”、“斯德哥尔摩”});
:但我不确定确切的语法

那么:

(def cities ["Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris","Stockholm"])
逗号是可选的

(def cities ["Berlin" "Brussels" "Helsinki" "Madrid" "Oslo" "Paris" "Stockholm"])

严格来说,上面提供的示例将生成向量。可通过以下方式生成列表:

(list "Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris","Stockholm")
或更短:

'("Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris","Stockholm")

在某些情况下,这种差异可能很重要。

通常,您可以使用要创建的集合的名称作为创建该集合的函数(易于记住,嗯?):

或者,如果您事先不知道需要创建什么类型,可以将
用于

(defn make-trip [trip cities]
    (into trip cities))

并通过类似于
(使旅行{“家”}[“柏林”、“布鲁塞尔”、“赫尔辛基”、“马德里”、“奥斯陆”、“巴黎”)

这些实际上都不等同于:

List<String> cities = Arrays.asList(new String[] {"Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris","Stockholm" });
List cities=Arrays.asList(新字符串[]{“柏林”、“布鲁塞尔”、“赫尔辛基”、“马德里”、“奥斯陆”、“巴黎”、“斯德哥尔摩”});
这更接近于对实际问题的回答:

user=> (java.util.ArrayList. [1 2 3])
#<ArrayList [1, 2, 3]>
user=> (.get (java.util.ArrayList. [1 2 3]) 0)
1
user=>(java.util.ArrayList.[1 2 3])
#
user=>(.get(java.util.ArrayList.[1 2 3])0)
1.

前面的勾号也会阻止对列表中的任何内容进行评估。意识到
(list“hello”(str“hello”“world”)“world”)=>“hello hello world”
和“(“hello”(str“hello”“world”)“world”)之间的区别是很好的,至少在较新的Java版本中,您可以使用
数组,“赫尔辛基”、“马德里”、“奥斯陆”、“巴黎”、“斯德哥尔摩”)
。对于所有对Clojure感兴趣的人来说,可能是的副本。在Clojure中,列表不提供直接访问,因为您需要Vector(在Clojure中)直接访问。
user=> (java.util.ArrayList. [1 2 3])
#<ArrayList [1, 2, 3]>
user=> (.get (java.util.ArrayList. [1 2 3]) 0)
1