Предложения для реализации интерфейса командной строки

Локальные и анонимные классы, а также lambdas, фиксируют локальные переменные по значению при их создании. Поэтому им невозможно ссылаться на себя, захватывая локальную переменную, потому что значение для указания на себя не существует еще в момент их создания.

Код в локальных и анонимных классах может все еще ссылайтесь на себя, используя this. Однако this в лямбда не относится к лямбда; он ссылается на this из внешней области.

Вместо этого вы можете захватить изменчивую структуру данных, например массив:

IntToDoubleFunction[] foo = { null };
foo[0] = x -> { return  ( x == 0)?1:x* foo[0].applyAsDouble(x-1);};

, хотя вряд ли это изящное решение.

36
задан Jeff Atwood 26 July 2009 в 08:42
поделиться

13 ответов

Я вижу много специфических особенностей командной строки Windows, но если Ваша программа предназначается для Linux, я нахожу стандарт командной строки GNU быть самым обладающим интуицией. В основном это использует двойные дефисы для длинной формы команды (например, --help) и единственный дефис для короткой версии (например, -h). Можно также "сложить" короткие версии вместе (например, tar -zxvf filename ) и смешивание и подгонка, долгое и короткое к содержанию основы.

сайт GNU также перечисляет стандартные имена опции .

getopt библиотека значительно упрощает парсинг этих команд. Если C не Ваша сумка, Python имеет подобную библиотеку, как делает Perl.

29
ответ дан yukondude 27 November 2019 в 05:51
поделиться

Если Вы используете Perl, мой CLI:: платформа Приложения могла бы быть, в чем Вы нуждаетесь. Это позволяет Вам создать приложения с SVN/CVS/GIT как пользовательский интерфейс легко ("Ваша-команда-o - долго - выбирают some-action-to-execute некоторые параметры").

0
ответ дан jkramer 27 November 2019 в 05:51
поделиться

Соглашения, что Вы используете для Вас приложение, зависели бы от телефона

1), Какое приложение это.
2), Какую операционную систему Вы используете. Linux? Windows? У них обоих есть различные соглашения.

то, Что я предложил бы, является взглядом на другие интерфейсы командной строки для других команд в Вашей системе, обращение особого внимания на параметры передало. Наличие неправильных параметров должно дать направленное сообщение об ошибке решения пользователя. Легкое для нахождения экрана справки может помочь в удобстве использования также.

Без знают то, что точно сделает Ваше приложение, трудно дать определенные примеры.

0
ответ дан Alan H 27 November 2019 в 05:51
поделиться

соглашения, что Вы используете для Вас приложение, зависели бы от телефона

1), Какое приложение это. 2), Какую операционную систему Вы используете.

Это определенно верно. Я не уверен в быстрых DOS соглашениях, но в подобных Unix системах общие соглашения примерно:

1) Форматирование

appName параметры

2), Односимвольные параметры (такие как 'x') передаются как-x 3), параметры символа Multi (такие как 'добавлять-ключи) передаются как - добавлять-ключи

0
ответ дан donair 27 November 2019 в 05:51
поделиться

Если Вы будете использовать один из стандартных инструментов для генерации интерфейсов командной строки, как getopts, то Вы будете соответствовать автоматически.

0
ответ дан jodonnell 27 November 2019 в 05:51
поделиться

- операция [параметры] - команда [Ваша команда]-anotherthings [otherparams]....

, Например,

YourApp.exe -file %YourProject.prj% -Secure true
0
ответ дан Graviton 27 November 2019 в 05:51
поделиться

Дополнение ответа @vonc, не принимайте неоднозначные сокращения. Например:

  myCli.exe describe someThing
  myCli.exe destroy someThing
  myCli.exe des someThing ???

На самом деле, в этом случае, я, вероятно, не признал бы, что сокращение для "уничтожает"...

3
ответ дан Brent.Longborough 27 November 2019 в 05:51
поделиться

Вот статья CodeProject, которая могла бы выручить Вас...

Синтаксический анализатор Параметров командной строки C#/.NET

, ЕСЛИ VB является Вашей разновидностью, вот отдельная статья (с немного большим количеством сходных материалов руководства) для проверки...

Синтаксический анализ и Проверяют Параметры Командной строки с VB.NET

3
ответ дан Sean Gough 27 November 2019 в 05:51
поделиться

Соглашения командной строки варьируются от ОС до ОС, но соглашение, это, вероятно, получило и большую часть использования, и большую часть общественного внимания, является тем, поддерживаемым GNU getopt пакет. См. http://www.gnu.org/software/libc/manual/html_node/Using-Getopt.html для большего количества информации

, Она позволяет Вам смешивать однобуквенные команды, такой как - номер, с дольше, самодокументируя опции, такой как - числовой - реверс. Будьте хороши, и реализуйте - справка (-?) опция и затем Ваши пользователи будут в состоянии выяснить все, что они должны знать.

3
ответ дан Kimbo 27 November 2019 в 05:51
поделиться

Лучшая вещь сделать, ничего не принимают, если Вы можете. Когда оператор вводит в Вашем имени приложения для выполнения и не имеет никаких параметров, или хит их с блоком ИСПОЛЬЗОВАНИЯ или в альтернативе открывает Windows Form и позволяет им вводить все, в чем Вы нуждаетесь.

c:\>FOO

FOO

USAGE FOO -{Option}{Value}

-A Do A stuff
-B Do B stuff

c:\>

разграничивание Параметра я помещаю в соответствии с заголовком религиозной темы: дефисы (тире), удваивают дефисы, наклонные черты, ничто, позиционное, и т.д.

Вы не указали на свою платформу, но для следующего комментария я приму Windows и .net

, можно создать основанное на консоли приложение в .net и позволить ему взаимодействовать с Настольными Формами использования только путем выбора основанного на консоли проекта, тогда добавляющего Windows. Формы, Система. Рисование, и т.д. DLLs.

Мы делаем это все время. Это гарантирует, что никто не принимает оборот вниз темный переулок.

3
ответ дан Bill 27 November 2019 в 05:51
поделиться

Одной вещью мне нравится приблизительно определенный CLI, является использование ярлыки .
Т.е., все следующие строки делают то же самое

myCli.exe describe someThing
myCli.exe descr someThing
myCli.exe desc someThing

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

4
ответ дан VonC 27 November 2019 в 05:51
поделиться

Если Вы используете попытку C# Моно. GetOptions, это - очень мощный и простой к использованию синтаксический анализатор параметра командной строки. Это работает в Моно средах и с Microsoft.NET Framework.

РЕДАКТИРОВАНИЕ: Вот несколько функций

  • , Каждый параметрический усилитель имеет 2 представления CLI (1 символ и строка, например,-a или - добавляют)
  • , Значения по умолчанию
  • Со строгим контролем типов
  • Автоволшебно производят экран справки с инструкциями
  • , Автоволшебно производит экран
авторского права и версия
14
ответ дан Alfred Myers 27 November 2019 в 05:51
поделиться

Я всегда добавляю/? параметр для получения справки и я всегда пытаюсь иметь значение по умолчанию (т.е. наиболее распространенный сценарий) реализация.

Иначе я склонен использовать "/x" для переключателей и "/x:value" для переключателей, которые требуют, чтобы значения были переданы. Делает довольно легким проанализировать параметры с помощью регулярных выражений.

2
ответ дан Sean Gough 27 November 2019 в 05:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: