Please note that the recommended version of Scilab is 2026.0.0. This page might be outdated.
See the recommended documentation of this function
argn
Returns the actual number of input/output arguments in a function call
Syntax
[lhs, rhs] = argn() lhs = argn(1) rhs = argn(2)
Arguments
- lhs
Number of expected Left-Hand-Side output arguments. Is set to 1 when no output argument is expected.
- rhs
Number of Right-Hand-Side input arguments provided in the function call.
Description
This function is used inside a function definition.
It gives the number of actual inputs arguments (rhs)
and output arguments (lhs) passed to the function when the function is
called. It is usually used in function definitions to deal with
optional arguments.
![]() | There is no way to detect whether a Scilab function is called without expected
output argument. In this case, lhs returns 1. |
![]() | Testing the existence of a named input argument with isdef(..,"l")
is more robust that with argn(). Please see examples. |
Examples
Simple examples:
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);
--> test(); 1. 0. --> test(4.321); 1. 1. --> test(3, -1); 1. 2. --> test(3, -1, a=0); Wrong number of input arguments. --> test(3, -1, c=8); Wrong number of input arguments. --> out1 = test(); 1. 0. --> [o1, o2] = test(%pi); 2. 1.
With varargin and varargout:
function [res, varargout]=test(a, varargin) res = "abc"; varargout = list(%i); [lhs, rhs] = argn() disp([lhs rhs]) // <<<<<<<<<<< endfunction test(); test(4.321); test(3, -1); test(3, -1, a=0); test(3, -1, 8); out1 = test(); [o1, o2] = test(%pi); [o1, o2, o3] = test(%pi);
--> test(); 1. 0. --> test(4.321); 1. 1. --> test(3, -1); 1. 2. --> test(3, -1, a=0); 1. 3. --> test(3, -1, 8); 1. 3. --> out1 = test(); 1. 0. --> [o1, o2] = test(%pi); 2. 1. --> [o1, o2, o3] = test(%pi); 3. 1.
Robust test of the existence of input arguments:
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)
--> test() ans = --> test(4.321) ans = a passed. --> test(4.321, %z) ans = a passed. b passed. --> test(b=3) ans = b passed. --> test(c=3) ans = c passed. --> test(-1, c=3) ans = a passed. c passed. --> test(-1, a=2, c=3) // argins in varargin are/become always anonymous ans = a passed. --> test(b=-1, a=2, c=3) ans = a passed. b passed.
Another usage:
function concat=myOwnFunction(name, optional) [lhs, rhs] = argn() if rhs <= 1 then optional="my Optional value"; end if rhs == 0 then error("Expect at least one argument"); end concat=name+" "+optional; endfunction
See also
| Report an issue | ||
| << Libraries | Advanced functions | deff >> |
