




Я разработал и реализовал argparse. Да, технически вы можете использовать флаг --argument и argparse в одной и той же функции, но это не имеет смысла. Опция --argument работает полностью независимо от argparse и не знает флагов. Создайте следующую функцию:
function x -a arg1 -a arg2
set --show arg1 arg2 argv
end
Теперь вызовите его следующим образом: x --flag val arg. Обратите внимание, что --flag привязан к arg1, а val привязан к arg2, а argv по-прежнему содержит все аргументы, переданные функции. Если у вашей функции есть флаги, вам не следует использовать --argument. Если это не так, то нет смысла использовать argparse.
@0az Как вы ожидаете, что эти двое будут взаимодействовать? Как я уже говорил, если ваша функция распознает короткие или длинные флаги, вы должны использовать argparse, а не --argument. Да и сам --argument в любом случае особо не нужен. Это просто синтаксический сахар для выполнения set -l arg1 $argv[1], set -l arg2 $argv[2] и т. д. внутри функции. Взгляните на некоторые стандартные автозагружаемые функции, использующие argparse; например, псевдоним.рыба.
Чтобы быть конкретным, запрос функции для добавления позиционных аргументов в argparse. Это просто сахар, но именно сахар побуждает использовать более читаемые имена.
@ 0az После завершения argparse$argv удаляет все непозиционные аргументы; т. е. он будет содержать только позиционные аргументы. Поэтому, если дать им осмысленные имена, это улучшит ясность вашей функции, просто выполните set -l var_name1 $argv[1] и т. д. после вызова argparse. Я скептически отношусь к такому усложнению argparse. Тем более, что затем вам нужно определить правила того, что происходит, когда количество позиционных аргументов не соответствует количеству имен переменных.
Ах хорошо. Время запроса функции.