Как я могу использовать неопределенный символ в fn в Clojure? - PullRequest
2 голосов
/ 31 декабря 2010

В ближайшем будущем я хотел бы написать функцию, которую я могу вызвать так:

(function undefined-symbol-which-means-something-else)

: есть ли способ написать такую ​​функцию, не прибегая к ',: или используя макрос?

1 Ответ

5 голосов
/ 31 декабря 2010

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

Некоторые варианты для рассмотрения (в моем личном порядке предпочтений ...):

  • Использованиеключевое слово (т.е. ": my-keyword") - это то, для чего они были созданы!Вам никогда не нужно заранее определять ключевые слова.Кроме того, это, вероятно, самый идиоматический способ ведения дел.
  • Используйте обычную строку в качестве параметра.Вы всегда можете преобразовать это в символ позже, если вам нужно с помощью (символ «somename»)
  • Если функция является макросом, а не функцией, то теоретически вы можете достичь чего-то похожего на то, что вы хотите, переосмыслив символна лету.Это работает, потому что расширение макроса происходит до оценки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...