Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Português - 日本語 - Русский
Aide de Scilab >> Fonctions avancées > argn

argn

nombre effectif d'arguments d'entrée reçus / attendus en sortie d'une fonction

Séquence d'appel

[lhs, rhs] = argn()
lhs = argn(1)
rhs = argn(2)

Arguments

lhs

Nombre d'arguments de sortie attendus. Vaut 0 si la fonction a été appelée sans argument de sortie.

rhs

Nombre d'arguments passés en entrée de la fonction Scilab considérée.

Description

Cette fonction est utilisée à l'intérieur d'une définition de fonction. Elle donne le nombre effectif (au moment de l'appel) d'arguments d'entrée rhs et de sortie lhs. Elle permet d'utiliser des arguments optionnels.

L'existence d'un argument d'entrée nommé (hors de la portée d'un éventuel varargin) peut être testée avec isdef(..,"l") de manière plus robuste qu'en utilisant argn(). Un exemple figure ci-après.

Exemples

Exemples élémentaires :

function [res, res2]=test(a, b)
  [lhs, rhs] = argn()
  [res, res2] = ("abc", %pi);
  disp([lhs rhs])  // <<<<<<<<<<<
endfunction

test();
test(4.321);
test(3, -1);
test(3, -1, a=0);
test(3, -1, c=8);

out1 = test();
[o1, o2] = test(%pi);

Avec varargin ou/et varargout:

function [varargout]=disp_argn(varargin)
  varargout = list("abc",%i);
  [lhs, rhs] = argn()
  disp([lhs rhs])  // <<<<<<<<<<<
endfunction

function [res, varargout]=disp_argn_with_args(a, varargin)
  res = "abc";
  varargout = list(%i);
  [lhs, rhs] = argn()
  disp([lhs rhs])  // <<<<<<<<<<<
endfunction

// varargin
disp_argn(1);
disp_argn_with_args(1);
disp_argn(1, 2);
disp_argn_with_args(1, 2);
disp_argn(1, 2, 3);
disp_argn_with_args(1, 2, 3);

// varargout
out1 = disp_argn();
out1 = disp_argn_with_args();
[o1, o2] = disp_argn();
[o1, o2] = disp_argn_with_args();
[o1, o2, o3] = disp_argn();
[o1, o2, o3] = disp_argn_with_args();

Test robuste de l'existence d'un argument d'entrée:

function res=test(a, b, varargin)
    res = ""
    if isdef("a","l")
        res = "a passed."
    end
    if isdef("b","l")
        res = res + " b passed."
    end
    if isdef("c","l")
        res = res + " c passed."
    end
endfunction
clc
test()
test(4.321)
test(4.321, %z)
test(b=3)
test(c=3)
test(-1, c=3)
test(-1, a=2, c=3)
test(b=-1, a=2, c=3)

Autre usage fréquent:

function concat=maFonction(nom, option)
  [lhs, rhs] = argn()
  if rhs <= 1 then
     option = "mon argument optionnel";
  end
  if rhs == 0 then
     error("Au moins un argument attendu");
  end
  concat = nom+" "+option;
endfunction

Voir aussi

  • isdef — vérifie si une variable existe
  • varargin — variable number of arguments in an input argument list
  • varargout — arbitrarily long list of output arguments
  • macrovar — variables d'une fonction
  • function — définition d'une fonction Scilab

History

VersionDescription
6.1.0L'argument lhs est assigné à zero si appelé sans argument de sortie.
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Feb 25 08:50:45 CET 2020