我想在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)
在某些情况下,这种差异可能很重要.
(def cities ["Berlin" "Brussels" "Helsinki" "Madrid" "Oslo" "Paris" "Stockholm"])
Run Code Online (Sandbox Code Playgroud)
http://en.wikibooks.org/wiki/Clojure_Programming/Tutorials_and_Tips#Clojure_for_Java_Programmers
一般来说,你可以使用你想要创建的集合的名称作为创建它的函数(容易记住呃?):
(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"])