prog:: getOptions

Получите и проверьте опции в рамках процедуры

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

prog::getOptions(n, arguments, allOptions, <ErrorOnUnexpected>, <optionTypes>)

Описание

prog::getOptions, названный в рамках процедуры, собирает и проверяет все опции из списка аргументов процедуры вызова.

Когда вы пишете свою собственную процедуру, prog::getOptions позволяет вам встроить набор и верификацию всех опций процедуры. Когда пользователь вызывает вашу процедуру, prog::getOptions сканирует все аргументы и обеспечивает структуру данных, которая содержит все значения опции. Смотрите Пример 1.

Функция prog::getOptions возвращает список, который содержит таблицу всех допустимых опций наряду с их значениями и списка неожиданных аргументов. Для ожидаемых опций prog::getOptions возвращает следующие значения:

Если опция может иметь только TRUE или значения FALSE, пользователь вашей процедуры может обеспечить имя опции, вместо того, чтобы обеспечить пару значения опции. Если пользователь предоставляет возможность, не задавая ее значение, prog::getOptions возвращает булево значение TRUE для той опции. Смотрите Пример 2.

prog::getOptions возвращает список с двумя компонентами: таблица ожидаемых опций и списка неожиданных аргументов. Можно получить доступ к компонентам того списка отдельно при помощи индексного оператора (см. _index). Смотрите Пример 3.

По умолчанию функция prog::getOptions не делает ошибки, когда это находит неожиданный аргумент. Чтобы переключиться на издание ошибок на неожиданных аргументах, используйте параметр ErrorOnUnexpected. Смотрите Пример 4.

Процедура, которая включает prog::getOptions, должна принять аргументы в следующем порядке: сначала обязательные параметры, и затем все опции. Функция prog::getOptions позволяет вам задать номер n аргумента, от которого функция начинает проверять опции. Функция prog::getOptions принимает, что первые аргументы n - 1 являются параметрами и, поэтому, не проверяет их. Смотрите Пример 5.

Параметр optionTypes позволяет вам задать приемлемые типы для значений опции. Можно задать приемлемые типы для некоторых или всех ожидаемых возможностей, предоставленных в таблице allOptions. Смотрите Пример 6.

Первые три параметра prog::getOptions (n, arguments и allOptions) требуются. ErrorOnUnexpected и optionTypes являются дополнительными. Необходимо обеспечить параметры prog::getOptions с помощью порядка, показанного в разделе Calls этой страницы. Поэтому, если вы хотите использовать пятый параметр optionTypes, также необходимо явным образом использовать четвертый параметр ErrorOnUnexpected.

Второй параметр функции prog::getOptions, arguments, является списком всех аргументов вашей процедуры. prog::getOptions сканирует аргументы, обеспеченные в том списке. Несмотря на то, что prog::getOptions принимает любой список как второй аргумент, процедура вызова всегда должна предоставлять список всех своих аргументов (и параметры и опции), чтобы избежать потенциальных ошибок. Синтаксис [ args()] предоставляет список всех аргументов процедуры вызова. Смотрите Пример 7.

Примеры

Пример 1

Чтобы встроить набор опции и шаг верификации в вашу процедуру, вызовите функцию prog::getOptions в рамках той процедуры. Чтобы протестировать поведение prog::getOptions, создайте функциональный f, который вызывает prog::getOptions, чтобы отсканировать и проверить аргументы f. Например, создайте функциональный f, который принимает только одну опцию All:

f := () -> prog::getOptions(1, [args()], table(All = TRUE)):

prog::getOptions возвращает список. Первая запись списка является таблицей, содержащей все ожидаемые опции и их значения. Вторая запись является списком неожиданных аргументов. Например, вызов функции f() не содержит неожиданных аргументов:

f();

Вызов функции f(Unexpected) содержит неожиданный аргумент Unexpected:

f(Unexpected);

Пример 2

Когда пользователи вызывают процедуру, которая включает prog::getOptions, они могут задать новые значения для любой из допустимых опций той процедуры. В этом случае prog::getOptions возвращает новые значения. Если пользователь использует опцию, не задавая ее значение, prog::getOptions возвращает булево значение TRUE для той опции. Если пользователь явным образом не использует ожидаемую опцию, prog::getOptions возвращает значение по умолчанию той возможности, предоставленной в таблице allOptions. Например, в вызове функции f(Proc = op, Warning), функция prog::getOptions возвращает следующие значения:

  • Если пользователь обеспечивает значение для опции, prog::getOptions возвращает то значение.

  • Если пользователь не использует опцию в вызове процедуры, prog::getOptions возвращает значение по умолчанию для той опции.

f := () -> prog::getOptions(1, [args()],
                               table(All = FALSE,
                                     Proc = id,
                                     Warning = FALSE))[1]:
f(Proc = op, Warning)

Пример 3

Чтобы получить доступ к таблице ожидаемых опций и списка неожиданных аргументов отдельно, используйте индексный оператор (см. _index):

f := () -> prog::getOptions(1, [args()],
                                  table(All = TRUE))[1]:
g := () -> prog::getOptions(1, [args()],
                                  table(All = TRUE))[2]:
ExpectedOptions = f(Unexpected);
UnexpectedOptions = g(Unexpected)

Пример 4

Когда пользователь предоставляет неожиданные аргументы к вашей процедуре, prog::getOptions может собрать эти аргументы и возвратить их как список. Кроме того, prog::getOptions может остановиться и выдать ошибку, когда он находит первый неожиданный аргумент. Чтобы выдать ошибку вместо того, чтобы перечислить неожиданные аргументы, используйте TRUE в качестве четвертого параметра prog::getOptions:

f := () -> prog::getOptions(1, [args()], table(All = TRUE), TRUE):
f(Unexpected)
Error: Invalid argument number 1.
  Evaluating: f

Пример 5

Функция prog::getOptions не отличает параметры от опций автоматически. Если некоторые аргументы процедуры являются параметрами, исключают их из верификации опции. В противном случае функция prog::getOptions перечисляет те параметры как неожиданные аргументы. Например, списки 1 и 2 prog::getOptions в качестве неожиданных аргументов вызова функции f(1, 2, All):

f := () -> prog::getOptions(1, [args()], table(All = TRUE))[2]:
UnexpectedOptions = f(1, 2, All);

Если вы установите функцию prog::getOptions на ошибку на неожиданных аргументах, это будет ошибка на параметрах также:

f := () -> prog::getOptions(1, [args()], table(All = TRUE), TRUE):
f(1, 2, All);
Error: Invalid argument number 1.
  Evaluating: f

Чтобы исключить первые параметры n функции от верификации опции, предоставьте номеру n + 1 в качестве первого аргумента prog::getOptions. В вызове функции задайте все параметры n, прежде чем вы зададите опции. Например, чтобы не проверять первые два аргумента в вызов функции f(1, 2, All), используйте следующий синтаксис:

f := () -> prog::getOptions(3, [args()], table(All = TRUE))[2]:
UnexpectedOptions = f(1, 2, All);

Когда вы используете prog::getOptions, необходимо обеспечить все обязательные параметры сначала, и затем предоставить возможности. Следующий синтаксис не работает, потому что prog::getOptions принимает, что первые два аргумента в вызове функции, f(1, All, 2) является параметрами и номером 2, являются опцией:

f := () -> prog::getOptions(3, [args()], table(All = TRUE), TRUE):
f(1, All, 2);
Error: Invalid argument number 3.
  Evaluating: f

Пример 6

Чтобы задать приемлемые типы значений опции, используйте таблицу, которая содержит приемлемые опции как индексы и их ожидаемые типы как записи. Например, укажите, что опция All должна иметь тип DOM_BOOL, и опция Proc должна иметь тип Type::Function:

f:= () -> prog::getOptions(1, [args()],
                              table(All = TRUE, Proc = id),
                              TRUE,
                              table(All = DOM_BOOL,
                                    Proc = Type::Function)
                              )[1]:

Теперь, опции могут иметь только значения правильных типов:

f(All = FALSE, Proc = id)

При попытке использовать значение неправильного типа, функция выдает ошибку:

f(All = FALSE, Proc = 0)
Error: Invalid type of argument number 2.
  Evaluating: f

Кроме того, можно задать и использовать процедуру для того, чтобы выполнить проверку типа. Для аргументов допустимого типа процедура должна возвратить TRUE или выражение, которое может быть выполнено к TRUE функцией bool:

f := () -> prog::getOptions(
                    2, [args()],
                    table(File = ""), TRUE,
                    table(File = (X -> contains({DOM_STRING,
                                                 DOM_INT},
                                                 type(X))))
                           )[1]:
f(FALSE, File = 0), f(TRUE, File = "test.log")

Пример 7

Используя arguments, чтобы разделить опции от параметров не рекомендуется, потому что он может привести к ошибкам. Всегда используйте первый параметр prog::getOptions, чтобы задать, сколько параметров вы имеете. Несмотря на то, что прогр:: getOptions принимает любой список как второй аргумент, лучшая практика состоит в том, чтобы использовать только args(). Следующий пример demostrates, что использование arguments, чтобы разделить опции от параметров может привести к неправильному сообщению об ошибке. Несмотря на то, что это сообщение об ошибке правильно указывает, что одна из опций имеет значение неправильного типа, индекс аргумента является неправильным:

f := () -> prog::getOptions(1, [args(2..args(0))],
                            table(Option1 = TRUE), 
                            TRUE,
                            table(Option1 = DOM_BOOL)):
f(x, Option1 = 1, Option2)
Error: Invalid type of argument number 1.
  Evaluating: f

Чтобы получить правильное сообщение об ошибке для этого примера, используйте первый параметр prog::getOptions, чтобы исключить x из верификации опции:

f := () -> prog::getOptions(2, [args()], table(Option1 = TRUE), 
                            TRUE, table(Option1 = DOM_BOOL)):
f(x, Option1 = 1, Option2)
Error: Invalid type of argument number 2.
  Evaluating: f

Параметры

n

Положительное целое число, которое задает количество права преимущественной покупки в списке аргументов. При вызове процедуры пользователь должен предоставить всем обязательным параматерям перед опциями.

arguments

Список всех аргументов процедуры. Используйте args(), чтобы получить доступ ко всем аргументам.

allOptions

table, который содержит все приемлемые опции как индексы и их значения по умолчанию как записи: table(Option = defaultValue)

ErrorOnUnexpected

Булев постоянный TRUE или FALSE. Если значением является TRUE, prog::getOptions выдает ошибку, когда это находит неожиданный аргумент. Если значением является FALSE, prog::getOptions собирает все неожиданные аргументы и возвращает их как список. По умолчанию, ErrorOnUnexpected = FALSE.

optionTypes

table, который содержит приемлемые опции как индексы и их ожидаемые типы как записи: table(Option = optionType). Здесь optionType должен быть допустимым вторым аргументом функции testtype или процедуры, которая возвращает TRUE (или выражение, которое может быть выполнено к TRUE функцией bool) для аргументов допустимого типа. Если вы хотите задать optionTypes, также необходимо явным образом задать ErrorOnUnexpected.

Возвращаемые значения

Перечислите, который содержит таблицу и список. Таблица содержит все допустимые опции процедуры вызова и их значений. Для ожидаемых опций, которые не заданы в процедуре, значения являются своими значениями по умолчанию. Список содержит все неожиданные аргументы в процедуре.

Смотрите также

Функции MuPAD