Анонимная функция, возвращающая 1 с помощью # () - PullRequest
17 голосов
/ 15 февраля 2011

Используя defn или fn, легко создать функцию, которая принимает один аргумент, который игнорирует ее и возвращает 1:

(defn ret1 [arg] 1)
(fn [arg] 1)

Возможно ли это сделать с помощью макроса # ()?Я не имею в виду использование чего-то уродливого или «обмана», такого как

#(/ % %)  or 
#(if (nil? %) 1 1)

Я имею в виду буквальное игнорирование параметра и возврат 1. Я не могу найти чистый синтаксис, который работает.

Ответы [ 3 ]

28 голосов
/ 15 февраля 2011

#(do %& 1) ... но (constantly 1) лучше.

5 голосов
/ 15 февраля 2011

Синтаксис # () нельзя использовать для создания функций, которые имеют неиспользуемые параметры в соответствии с требованиями вашего описания.Это ограничение макроса # ().

Я бы порекомендовал , а не , используя # (), а вместо этого просто писал (постоянно 1), что является очень кратким способом создания функцииигнорирует параметр и всегда возвращает 1.

0 голосов
/ 15 июля 2019

Как насчет #(identity 1)? который делает то же самое, что и #(do %& 1) или (constantly 1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...