Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2023.1.0 - Português


varargin

variável do número de argumentos de saída em uma lista de argumentos de entrada

Descrição

Uma função cujo último argumento de entrada é varargin pode ser chamada com mais argumentos de entrada que os indicados pela lista de argumentos de entrada. Os argumentos de chamada passados da palavra-chave varargin em diante podem ser recuperados em uma lista chamada varargin.

Suponha que a palavra-chave varargin é o n-ésimo argumento da lista de argumentos de entrada formal, então, se a função é chamada com n-1 argumentos de entrada, a lista varargin não é definida. Se a função for chamada com n-1 argumentos, então varargin é uma lista vazia

function y= ex(varargin) pode ser chamada com qualquer número de argumentos de entrada. Dentro da função ex argumentos de entrada podem ser recuperados em varargin(i), i=1:length(varargin)

Se não for o último argumento de entrada da função, varargin é um argumento de entrada normal, sem nenhum significado especial.

O número de argumentos de entrada real é dado por argn(2).

Observações

Sintaxe de argumento nomeada, como foo(...,key=value), é incompatível com o uso de varargin. A razão é que os nomes (i.e. keys) associados aos valores value não são armazenados na lista varargin. Considere por exemplo:

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

O resultado é o mesmo, mas os argumentos foram invertidos.

Exemplos

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))
Report an issue
<< tree2code Funções 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 May 22 12:42:19 CEST 2023