Нет Это хороший стиль, чтобы принимать только аргументы, которые будут использоваться в ваших функциях. В тех случаях, когда вы можете думать, что удобно принимать больше, рассмотрите возможность преобразования входных данных. Сохранение различия между приложением функции и выбором данных - это хорошо.
Иногда вам приходится создавать функции, которые не используют первый аргумент, например, при определении протоколов, часто вам не нужен аргумент this
, поэтому вы просто отбрасываете его. Здесь снова лучше быть явным и прямым о том, что происходит. Вы не сделаете код более элегантным, делегируя другой функции, просто еще один умственный шаг для читателя.
Избегайте вардического поведения, когда оно вам не подходит. Вы жертвуете реальной выгодой (проверка арности). Он раскрывает вас до трудностей, чтобы рассуждать об ошибках (opps я должен был применить этот вектор вместо его передачи!) У меня было 4 параметра вместо 3 после того, как я реорганизовал, чтобы не понадобился второй аргумент).
Не могли бы вы привести пример фактической функции, в которой это было бы полезно? –
На самом деле я столкнулся с этим через код в сообщении, на который вы только что ответили: http://stackoverflow.com/questions/35470950/getting-the-positions-of-the-occurrences-of-one-item-in- a-sequence/35471392? noredirect = 1 # comment58638472_35471392 –
В анонимной функции, которую вы передаете 'filter', вы фактически разрушаете вектор, * не * принимаете второй аргумент. Вы можете переписать его как '(comp (partial = item) second)'. –