2012-07-05 3 views

ответ

2

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

(my-function arg1 arg2 arg3 arg4) 
(my-function arg1 arg2 key1 val1) 

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

Следовательно, я бы не рекомендовал идти по этому маршруту. Альтернативы для рассмотрения:

  • Упростите свои функции. Если у вас есть много аргументов, это может означать, что вы слишком много «собрали» в одну функцию.
  • Pass все ключевые аргументы/значения как одной карты
+0

Я хотел написать макрос цикла, который выполняет тело заданного размера, пока условие не верно, и в этом случае она будет возвращать результат формы прошедшего с помощью клавиатуры arg (или иначе в противном случае). Но да, я, вероятно, просто сделаю что-то другое. – Cubic

Смежные вопросы