Как вызвать метод eval класса Java из Clojure?

Если у определенного класса Java есть метод с именем «eval», как я могу вызвать его из Clojure?

Выполнение следующего, кажется, вызывает метод eval из clojure.core вместо eval TestObject:

(defn test[x] 
  (let [obj (new TestObject)] 
    (. obj eval x)))

person Emre Colak    schedule 18.02.2013    source источник
comment
Это не похоже на правду - с чего вы так думаете?   -  person sepp2k    schedule 18.02.2013


Ответы (1)


(defn test[x] 
  (let [obj (new TestObject)] 
    (.eval obj x)))

Изменить. Однако это очень странно. Специальная форма Dot . ожидает символ в качестве второго параметра, и имя этого символа интерпретируется как имя метода/поля класса. Таким образом, eval не может оцениваться как функция eval в вашем случае.

person mobyte    schedule 18.02.2013
comment
@EmreColak Устраняет ли это проблему? - person mobyte; 18.02.2013