Scilab 6.0.1
Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
argn
関数コールの入力/出力引数の数を返す
呼出し手順
[lhs, rhs] = argn() lhs = argn(1) rhs = argn(2)
設定
- 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.
説明
この関数は関数定義の内部で使用されます.
この関数は関数がコールされた際に関数に指定された実際の入力引数(lhs
)と
出力引数(lhs
) の数を出力します.
通常,関数の定義においてオプションの引数を処理する際に使用されます.
lhs は常に1以上であることに注意してください.
言い換えると,関数が出力引数なしにコールされた場合であっても,
lhs は 1 となります. |
Testing the existence of a named input argument with isdef(..,"l")
is more robust that with argn() . Please see 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.
Robustly testing 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
参照
Report an issue | ||
<< Libraries | Functions | deff >> |