Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2024.0.0 - Français


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.
Report an issue
<< Libraries Fonctions avancées deff >>

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:
Tue Oct 24 14:34:20 CEST 2023