* Bug 15380 fixed: argn() page was unclear & uncomplete
[scilab.git] / scilab / modules / functions / help / ja_JP / argn.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4  * Copyright (C) ????-2008 - INRIA
5  * Copyright (C) 2018 - Samuel GOUGEON
6  *
7  * Copyright (C) 2012 - 2016 - Scilab Enterprises
8  *
9  * This file is hereby licensed under the terms of the GNU GPL v2.0,
10  * pursuant to article 5.3.4 of the CeCILL v.2.1.
11  * This file was originally licensed under the terms of the CeCILL v2.1,
12  * and continues to be available under such terms.
13  * For more information, see the COPYING file which you should have received
14  * along with this program.
15  *
16  -->
17 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
18         xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML"
19         xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org"
20         xml:lang="ja" xml:id="argn">
21     <refnamediv>
22         <refname>argn</refname>
23         <refpurpose>関数コールの入力/出力引数の数を返す</refpurpose>
24     </refnamediv>
25     <refsynopsisdiv>
26         <title>呼出し手順</title>
27         <synopsis>
28            [lhs, rhs] = argn()
29             lhs = argn(1)
30             rhs = argn(2)
31         </synopsis>
32     </refsynopsisdiv>
33     <refsection role="arguments">
34         <title>設定</title>
35         <variablelist>
36             <varlistentry>
37                 <term>lhs</term>
38                 <listitem>
39                 <para>Number of expected Left-Hand-Side output arguments. Is set to 1 when no output
40                 argument is expected.
41                 </para>
42                 </listitem>
43             </varlistentry>
44             <varlistentry>
45                 <term>rhs</term>
46                 <listitem>
47                 <para>Number of Right-Hand-Side input arguments provided in the function call.
48                 </para>
49                 </listitem>
50             </varlistentry>
51         </variablelist>
52     </refsection>
53     <refsection>
54         <title>説明</title>
55         <para>
56             この関数は関数定義の内部で使用されます.
57             この関数は関数がコールされた際に関数に指定された実際の入力引数(<varname>lhs</varname>)と
58             出力引数(<varname>lhs</varname>) の数を出力します.
59             通常,関数の定義においてオプションの引数を処理する際に使用されます.
60         </para>
61         <warning>
62             <varname>lhs</varname> は常に1以上であることに注意してください.
63             言い換えると,関数が出力引数なしにコールされた場合であっても,
64             <varname>lhs</varname> は 1 となります.
65         </warning>
66         <warning>
67             Testing the existence of a named input argument with <literal>isdef(..,"l")</literal>
68             is more robust that with <literal>argn()</literal>. Please see examples.
69         </warning>
70     </refsection>
71     <refsection>
72         <title>例</title>
73         <para>Simple examples:</para>
74         <programlisting role="example"><![CDATA[
75 function [res, res2] = test(a, b)
76   [lhs, rhs] = argn()
77   [res, res2] = ("abc", %pi);
78   disp([lhs rhs])  // <<<<<<<<<<<
79 endfunction
80
81 test();
82 test(4.321);
83 test(3, -1);
84 test(3, -1, a=0);
85 test(3, -1, c=8);
86
87 out1 = test();
88 [o1, o2] = test(%pi);
89  ]]></programlisting>
90     <screen><![CDATA[
91 --> test();
92    1.   0.
93
94 --> test(4.321);
95    1.   1.
96
97 --> test(3, -1);
98    1.   2.
99
100 --> test(3, -1, a=0);
101 Wrong number of input arguments.
102
103 --> test(3, -1, c=8);
104 Wrong number of input arguments.
105
106 --> out1 = test();
107    1.   0.
108
109 --> [o1, o2] = test(%pi);
110    2.   1.
111 ]]></screen>
112     <para/>
113     <para>With varargin and varargout:</para>
114         <programlisting role="example"><![CDATA[
115 function [res, varargout] = test(a, varargin)
116   res = "abc";
117   varargout = list(%i);
118   [lhs, rhs] = argn()
119   disp([lhs rhs])  // <<<<<<<<<<<
120 endfunction
121
122 test();
123 test(4.321);
124 test(3, -1);
125 test(3, -1, a=0);
126 test(3, -1, 8);
127
128 out1 = test();
129 [o1, o2] = test(%pi);
130 [o1, o2, o3] = test(%pi);
131  ]]></programlisting>
132     <screen><![CDATA[
133 --> test();
134    1.   0.
135
136 --> test(4.321);
137    1.   1.
138
139 --> test(3, -1);
140    1.   2.
141
142 --> test(3, -1, a=0);
143    1.   3.
144
145 --> test(3, -1, 8);
146    1.   3.
147
148 --> out1 = test();
149    1.   0.
150
151 --> [o1, o2] = test(%pi);
152    2.   1.
153
154 --> [o1, o2, o3] = test(%pi);
155    3.   1.
156 ]]></screen>
157     <para/>
158     <para>Robustly testing the existence of input arguments:</para>
159         <programlisting role="example"><![CDATA[
160 function res = test(a, b, varargin)
161     res = ""
162     if isdef("a","l")
163         res = "a passed."
164     end
165     if isdef("b","l")
166         res = res + " b passed."
167     end
168     if isdef("c","l")
169         res = res + " c passed."
170     end
171 endfunction
172 clc
173 test()
174 test(4.321)
175 test(4.321, %z)
176 test(b=3)
177 test(c=3)
178 test(-1, c=3)
179 test(-1, a=2, c=3)
180 test(b=-1, a=2, c=3)
181  ]]></programlisting>
182     <screen><![CDATA[
183 --> test()
184  ans  =
185
186 --> test(4.321)
187  ans  =
188  a passed.
189
190 --> test(4.321, %z)
191  ans  =
192  a passed. b passed.
193
194 --> test(b=3)
195  ans  =
196   b passed.
197
198 --> test(c=3)
199  ans  =
200   c passed.
201
202 --> test(-1, c=3)
203  ans  =
204  a passed. c passed.
205
206 --> test(-1, a=2, c=3) // argins in varargin are/become always anonymous
207  ans  =
208  a passed.
209
210 --> test(b=-1, a=2, c=3)
211  ans  =
212  a passed. b passed.
213 ]]></screen>
214     <para/>
215     <para>Another usage:</para>
216         <programlisting role="example"><![CDATA[
217 function concat=myOwnFunction(name,optional)
218   [lhs,rhs] = argn()
219   if rhs <= 1 then
220      optional="my Optional value"
221   end
222   if rhs == 0 then
223      error("Expect at least one argument")
224   end
225   concat=name+" "+optional
226 endfunction
227  ]]></programlisting>
228     </refsection>
229     <refsection role="see also">
230         <title>参照</title>
231         <simplelist type="inline">
232             <member>
233                 <link linkend="isdef">isdef</link>
234             </member>
235             <member>
236                 <link linkend="varargin">varargin</link>
237             </member>
238             <member>
239                 <link linkend="varargout">varargout</link>
240             </member>
241             <member>
242                 <link linkend="macrovar">macrovar</link>
243             </member>
244             <member>
245                 <link linkend="function">function</link>
246             </member>
247         </simplelist>
248     </refsection>
249 </refentry>