Clojure def дает исключение UnsupportedOperationException - PullRequest
1 голос
/ 18 января 2011

Я пытаюсь пропинговать fleetdb с клиента clojure. Когда я проверяю связь с сервером, я получаю ответ «pong», но когда я пытаюсь сохранить его в переменной с помощью def, я получаю «UnsupportedOperationException applyTo».

(use 'fleetdb.client)

(def client (connect {:host "127.0.0.1", :port 3400}))

(client ["ping"]) ; get back "pong" as response

(type  (client ["ping"]))   ;java.lang.String

(print (client ["ping"]))   ; get back "pong" as response

(def isalive (client ["ping"])) 

; UnsupportedOperationException applyTo  fleetdb.client.proxy$java.lang.Object$IFn

; $ILookup$Closeable$9aed515e.applyTo (:-1)

Пробовал с clojure 1.2 и 1.3.0-alpha4

Что не так?

1 Ответ

1 голос
/ 19 января 2011

Кажется, что клиентский прокси не определяет метод applyTo , который является частью интерфейса IFn:

https://github.com/mmcgrana/fleetdb-client/blob/master/src/fleetdb/client.clj#L54

Это будет работать:

user> (def x (.invoke client ["ping"]))
#'user/x

Необходимо выяснить, почему applyTo используется вместо invoke

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