Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2024.1.0 - Русский


varargin

переменное число аргументов в списке входных аргументов

Описание

Функция, чьим последним входным аргументом является varargin, может быть вызвана с бОльшим числом входных аргументов, чем указано в списке входных аргументов. Аргументы вызова, переданные внутрь в форме ключевого слова varargin затем могут быть получены внутри функции в списке с именем varargin.

Допустим, что ключевое слово varargin является n-ным аргументом в списке формальных входных аргументов, тогда, если функция вызывается с меньшим числом, чем n-1, входных аргументов, то список varargin не будет определён. Если же функция вызывается с n-1 аргументами, то список varargin будет пустым списком.

function y = ex(varargin) может быть вызвана с любым числом аргументов. Внутри функции ex входные аргументы могут быть получены в varargin(i), i=1:length(varargin).

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

Общее число фактических входных аргументов даётся с помощью argn(2).

Примечание

Синтаксис именованных аргументов, такой как foo(...,key=value), не совместим с использованием varargin. Причина в том, что имена (то есть ключи), связанные со значениями, не хранятся в списке varargin. Рассмотрим пример:

function foo(varargin)
    disp([varargin(1),varargin(2)])
endfunction
--> foo(a=1, b=2)
 1.    2.
--> foo(b=1, a=2)
 1.    2.

Результат одинаковый, но аргументы были переставлены.

Примеры

function exampl(a, varargin)
    [lhs,rhs]=argn(0)
    if rhs>=1 then
        disp(varargin)
    end
endfunction

exampl(1)
exampl()
exampl(1,2,3)
l=list('a',%s,%t);
exampl(1,l(2:3))

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

  • varargout — переменное число аргументов в списке выходных аргументов
  • argn — Возвращает количество входных/выходных аргументов в вызове функции
  • function — открывает определение функции
  • list — объект Scilab'а и функция определения списка
Report an issue
<< tree2code Функции varargout >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Jun 17 17:55:12 CEST 2024