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
Аргументы
, и allOptions
) требуются. ErrorOnUnexpected
и optionTypes
являются дополнительными. Необходимо обеспечить параметры prog::getOptions
использование порядка, показанного в разделе Calls этой страницы. Поэтому, если вы хотите использовать пятый параметр optionTypes
, также необходимо явным образом использовать четвертый параметр ErrorOnUnexpected
.
Второй параметр prog::getOptions
аргументы функции
, список всех аргументов вашей процедуры. prog::getOptions
сканирует аргументы, обеспеченные в том списке. Несмотря на то, что prog::getOptions
принимает любой список как второй аргумент, процедура вызова всегда должна предоставлять список всех своих аргументов (и параметры и опции), чтобы избежать потенциальных ошибок. Синтаксис [ args()]
предоставляет список всех аргументов процедуры вызова. Смотрите Пример 7.
Чтобы встроить набор опции и шаг верификации в вашу процедуру, вызовите 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);
Когда пользователи вызывают процедуру, которая включает 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)
Чтобы получить доступ к таблице ожидаемых опций и списка неожиданных аргументов отдельно, используйте оператор индекса (см. _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)
Когда пользователь предоставляет неожиданные аргументы к вашей процедуре, 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
prog::getOptions
функция не отличает параметры от опций автоматически. Если некоторые аргументы процедуры являются параметрами, исключают их из верификации опции. В противном случае, prog::getOptions
функционируйте перечисляет те параметры как неожиданные аргументы. Например, prog::getOptions
списки 1 и 2 в качестве неожиданных аргументов вызова функции 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
Чтобы задать приемлемые типы значений опции, используйте таблицу, которая содержит приемлемые опции как индексы и их ожидаемые типы как записи. Например, укажите что 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")
Используя 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
|
Положительное целое число, которое задает количество права преимущественной покупки в списке аргументов. При вызове процедуры пользователь должен предоставить всем обязательным параматерям перед опциями. |
|
Список всех аргументов процедуры. Используйте |
|
|
|
Булев постоянный |
|
|
Перечислите, который содержит таблицу и список. Таблица содержит все допустимые опции процедуры вызова и их значений. Для ожидаемых опций, которые не заданы в процедуре, значения являются своими значениями по умолчанию. Список содержит все неожиданные аргументы в процедуре.