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

Zub*_*air 5 clojure

我想在Clojure中创建一个等价于以下Java代码的字符串列表:

List<String> cities = Arrays.asList(new String[] {"Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris","Stockholm" });
Run Code Online (Sandbox Code Playgroud)

:但我不确定确切的语法

aav*_*aav 14

严格地说,上面提供的例子将产生向量.列表可以通过以下方式生成:

(list "Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris","Stockholm")
Run Code Online (Sandbox Code Playgroud)

或更短:

'("Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris","Stockholm")
Run Code Online (Sandbox Code Playgroud)

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

  • 前面的勾选也会阻止评估列表中的任何内容.很高兴知道<code>(列出"hello"(str"hello""world")"world")==>"hello hello world world"</ code>和'("hello"( str"hello""world")"world")将(str"hello""world")完整地生成 (6认同)

Art*_*ldt 6

一般来说,你可以使用你想要创建的集合的名称作为创建它的函数(容易记住呃?):

(vector     "Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris","Stockholm")
(hash-map   "Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris")
(sorted-map "Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris")
(array-map  "Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris")
(hash-set   "Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris" "Stockholm")
(sorted-set "Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris" "Stockholm")
Run Code Online (Sandbox Code Playgroud)

或者你可以使用,into如果你事先不知道你需要创建什么类型.

(defn make-trip [trip cities]
    (into trip cities))
Run Code Online (Sandbox Code Playgroud)

传递类似的东西 (make-trip #{"home"} ["Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris"])