Как перегрузить «get» в Clojure - PullRequest
2 голосов
/ 20 марта 2011

Я хочу использовать ключевое слово getjure "get" для своей собственной функции.Как я могу предотвратить использование clojure «get», определенного в стандартных библиотеках?

Ответы [ 2 ]

4 голосов
/ 21 марта 2011

Я бы не рекомендовал использовать get для чего-либо, кроме как извлекать значение из коллекции, так как это ожидают все, кто читает ваш код.

Если вы не хотите этого делать, Wodin ответит то, что вы хотите.

Если вы действительно хотите «перегрузить» get согласно вашему названию, то есть заставить стандартную функцию get работать с вашим собственным типом коллекции - просто убедитесь, что ваша коллекция реализует ILookup, Map или IPersistentSet, и вы можете предоставить свой метод get / valAt. * ​​1007 *

4 голосов
/ 20 марта 2011

Как уже упоминалось, это не обязательно хорошая идея, но вы можете сделать это так:

user=> (ns your.name.space
  (:refer-clojure :exclude [get]))
nil
your.name.space=> (defn get [] "something")
#'your.name.space/get
your.name.space=> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...