Как написать результат использования функции spit? - PullRequest
1 голос
/ 17 апреля 2019

У меня есть этот код:

(defn a[]
  1
  )

(defn test []
  (spit "test.txt" a))

при запуске теста test.txt имеет только имя объекта:

test$a@603494de

но я хочу, чтобы оно имело значение 1

или если я использую with-open:

(defn test1 []
  (with-open [w (clojure.java.io/writer "test.txt")]
    (.write w a)))

получена ошибка: IllegalArgumentException Не найдено подходящего метода: запись для класса java.io.BufferedWriter

но если я напишу:

(.write w "a")

ошибки нет

как это исправить? Спасибо!

1 Ответ

2 голосов
/ 17 апреля 2019

Происходят две вещи:

Во-первых, a - это функция.Вам нужно либо вызвать его и получить значение, либо использовать def вместо этого (поскольку его константа):

(def a 1) ;; no need to call a
(defn a[] 1) ;; need to call a: (a)

Секунда (при условии, что вы сохранили defn, а a все еще является функцией), чтобы создать строку в качестве аргумента для spit, вам нужно использовать str:

(spit "test.txt" (str (a))) ;; note a is called
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...