2009-07-14 2 views
2

Я новичок в Clojure, и у меня есть простой (глупый) вопрос. Я пытаюсь читать 4 ввода данных пользователя, а затем хранить эти входы в списокНебольшой вопрос по созданию списков в Clojure

это мой код:

(DEF in1 (чтение строка)) (DEF in2 (чтение строки)) (DEF in3 (чтение строки)) (DEF in4 (чтение строки))

(DEF MyList «(in1 in2 дюйм3 in4))

Однако, когда я распечатать список, он дает me "in1 in2 in3 in4". Как заставить его поместить значение переменных in1 in2 in3 и in4 в список?

Спасибо

+1

Я хотел бы отметить, что вы вроде перерасхода списков. Также используйте векторы Clojure, у них есть очень высокие точки над списками! – Rayne

ответ

2
(def mylist (list in1 in2 in3 in4)) 
+0

Спасибо,. – 2009-07-14 05:31:15

4

Одиночная кавычка в Clojure (и большинство Лиспах) сообщает системе, что не оценить выражение. Таким образом

'(in1 in2 in3 in4) 

такая же, как

(quote (in1 in2 in3 in4) 

Они оба в конечном итоге с, как вы видели, список символов.

Если вам нужен список значений, представленных этими символами, вы можете использовать форму списка. Это оценивает все его аргументы и возвращает список результатов. Это будет выглядеть примерно так:

(def mylist (list in1 in2 in3 in4)) 
0

Использование list является, как это было предложено, то, что вы ищете. Если вы хотите смешивать оцененные и неоцененные символы, вы можете использовать синтаксис, цитирующий и неотображающий. Для вашего вопроса это другой способ на случай, если кто-то ищет это. (Обратите внимание на обратную котировку вместо одинарной кавычки)

`(~in1 ~in2 ~in3 ~in4) 
Смежные вопросы