Как создать список строк в Clojure? - PullRequest
5 голосов
/ 22 февраля 2011

Я хочу создать список строк в Clojure, эквивалентный следующему коду Java:

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

: но я не уверен в точном синтаксисе

Ответы [ 5 ]

14 голосов
/ 22 февраля 2011

Строго говоря, приведенные выше примеры будут давать векторы.Список может быть составлен следующим образом:

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

или короче:

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

В некоторых случаях это различие может быть важным.

8 голосов
/ 22 февраля 2011
(def cities ["Berlin" "Brussels" "Helsinki" "Madrid" "Oslo" "Paris" "Stockholm"])

http://en.wikibooks.org/wiki/Clojure_Programming/Tutorials_and_Tips#Clojure_for_Java_Programmers

6 голосов
/ 24 февраля 2011

В общем, вы можете использовать имя коллекции, которую хотите создать, в качестве функции для ее создания (легко запомнить?):

(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")

или вы можете использовать into, если незаранее знайте, какой тип вам нужно создать.

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

и передайте ему что-то вроде (make-trip #{"home"} ["Berlin", "Brussels", "Helsinki", "Madrid", "Oslo", "Paris"])

2 голосов
/ 11 августа 2012

Ничто из этого на самом деле не эквивалентно:

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

Это намного ближе к ответу на тот вопрос, который фактически был задан:

user=> (java.util.ArrayList. [1 2 3])
#<ArrayList [1, 2, 3]>
user=> (.get (java.util.ArrayList. [1 2 3]) 0)
1
2 голосов
/ 22 февраля 2011

Как насчет:

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

Запятые являются необязательными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...