В записи clojure, как отобразить массив записей на вектор? - PullRequest
1 голос
/ 22 июля 2011

Если у меня есть вектор записей, которые реализуют протокол, и я хочу отобразить возвращаемое значение метода каждой из этих записей на другой вектор, есть ли чистый способ сделать это?Я могу просто использовать map с анонимной функцией, обертывающей вызов метода, но это выглядит немного неуклюже.Вы просто используете метод в качестве функции в первом аргументе вызова map.

(map mymethod myrecords)

Из-за несвязанной ошибки это не сработало для меня, и я подумал, что должен был сделать ...

(map #(mymethod %) myrecords)

... это то, что я считал неуклюжим.Так что вопрос недействителен.

1 Ответ

1 голос
/ 16 ноября 2011

Методы на записях работают с картой, как и любой другой метод:

(defprotocol Foo 
  (foo [this]))

(defrecord Bar [bar]
   Foo 
   (foo [this] bar)

(map foo [(Bar. 1) (Bar. 2)])
=> (1 2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...