Я пытаюсь динамически создавать функции на основе полей static
public
класса Java. Таким образом, в одном файле у меня есть что-то вроде:Как ссылаться на динамически сгенерированный символ?
(intern *ns* (symbol (get-fieldname-from-class class)) some-func)
Проблема заключается в том, что я хочу назвать эту конкретную функцию, в то время как она еще не определена.
Например, класс Java имеет статическое поле int PARENTHESIZED_EXPRESSION
. Из этого я создаю функцию parenthesized-expression?
. Это работает довольно хорошо, но когда я загрузить файл Clojure в REPL
, который использует эти функции я получаю
не в состоянии разрешить Скобки-выражение?
погрешность. Поэтому я должен убедиться, что символ сначала интернирован. Как я могу это сделать?
Я понимаю, что это не очень функциональный подход, но я немного не решаюсь ввести почти 80 подобных функций для всех полей этого класса. Кроме того, этот класс может быть изменен.
вызова статического публичного статического поля класса прост: 'Класс/fieldName' Почему вы должны пойти этот сложный путь к создавать для них функции? – Ankur
Я знаю, но я хочу заменить много (= (.getNodeType expr) ASTNode/PARENTHESIZED_EXPRESSION)) Подобные конструкции by (parenthesized-expression? Expr) –