</head> <body> <h1>Func 对象</h1> <pre class="NoIndent">class Func extends Object</pre> <p>表示可自定义或内置的函数, 并提供一个接口来调用, 将参数与其绑定, 以及检索它或它的参数的信息.</p> <p>有关其他可以像函数一样调用的对象的信息, 请参阅<a href="../misc/Functor.htm">函数对象</a>.</p> <p><code>Closure</code> 类继承 <code>Func</code>, 但没有定义任何新的属性.</p> <p>对于脚本中的每个内置函数或函数定义, 都有一个相应的只读变量, 其中包含一个 Func 对象. 这个变量直接用于调用函数, 但它的值也可以被读取, 以检索函数本身, 作为一个值. 例如:</p> <pre>InspectFn StrLen InspectFn InspectFn InspectFn(fn) { <em>; 显示所传函数的信息.</em> MsgBox fn.Name "() is " (fn.IsBuiltIn ? "built-in." : "user-defined.") } </pre> <p>下面使用 "FuncObj" 作为任何 Func 对象的占位符, 因为 "Func" 就是类本身.</p> <p>除了从 <a href="Object.htm">Object</a> 继承的方法和属性外, Func 对象还具有以下预定义的方法和属性.</p> <h2 id="toc">目录</h2> <ul class="indent"> <li><a href="#Methods">方法</a>: <ul> <li><a href="#Call">Call</a>: 调用函数.</li> <li><a href="#Bind">Bind</a>: 绑定参数到函数.</li> <li><a href="#IsByRef">IsByRef</a>: 确定参数是否为 ByRef 类型.</li> <li><a href="#IsOptional">IsOptional</a>: 确定参数是否是可选的.</li> </ul> </li> <li><a href="#Properties">属性</a>: <ul> <li><a href="#Name">Name</a>: 返回函数的名称.</li> <li><a href="#IsBuiltIn">IsBuiltIn</a>: 如果为内置函数, 则返回 1(true), 否则返回 0(false).</li> <li><a href="#IsVariadic">IsVariadic</a>: 如果函数为可变参数, 则返回 1(true), 否则返回 0(false).</li> <li><a href="#MinParams">MinParams</a>: 返回所需参数的数量.</li> <li><a href="#MaxParams">MaxParams</a>: 对于用户定义函数返回正式声明的参数数目, 对于内置函数返回最大的参数数目.</li> </ul> </li> </ul> <h2 id="Methods">方法</h2> <div class="methodShort" id="Call"><h3>Call</h3> <p>调用一个函数.</p> <pre class="Syntax">FuncObj(Param1, Param2, ...) FuncObj.<span class="func">Call</span>(Param1, Param2, ...)</pre> <h4 id="Call_Parameters">参数</h4> <dl> <dt>Param1, Param2, ...</dt> <dd> <p>参数和返回值由函数定义.</p> </dd> </dl> <h4 id="Call_Remarks">备注</h4> <p>调用一个值时, "Call" 方法是隐式的, 所以不需要显式指定.</p> </div> <div class="methodShort" id="Bind"><h3>Bind</h3> <p>为函数绑定参数.</p> <pre class="Syntax">BoundFunc := FuncObj.<span class="func">Bind</span>(Param1, Param2, ...)</pre> <h4 id="Bind_Parameters">参数</h4> <dl> <dt>Param1, Param2, ...</dt> <dd> <p>任意数量的参数.</p> </dd> </dl> <h4 id="Bind_Return_Value">返回值</h4> <p>类型: <a href="../Concepts.htm#objects">Object</a></p> <p>此方法返回一个<a href="../misc/Functor.htm#BoundFunc">绑定函数对象</a>.</p> </div> <div class="methodShort" id="IsByRef"><h3>IsByRef</h3> <p>确定一个参数是否为 ByRef(按地址传递) 类型.</p> <pre class="Syntax">Boolean := FuncObj.<span class="func">IsByRef</span>(<span class="optional">ParamIndex</span>)</pre> <h4 id="IsByRef_Parameters">参数</h4> <dl> <dt>ParamIndex</dt> <dd> <p>类型: <a href="../Concepts.htm#numbers">整数</a></p> <p>如果省略, <em>Boolean</em> 表示此函数是否含有 ByRef 参数. 否则, 请指定基于 1 的参数索引. </p> </dd> </dl> <h4 id="IsByRef_Return_Value">返回值</h4> <p>类型: <a href="../Concepts.htm#boolean">整数(布尔值)</a></p> <p>如果参数为 ByRef, 此方法返回 1(true), 否则为 0(false). 如果 <em>ParamIndex</em> 无效, 则抛出异常.</p> </div> <div class="methodShort" id="IsOptional"><h3>IsOptional</h3> <p>确定一个参数是否是可选的.</p> <pre class="Syntax">Boolean := FuncObj.<span class="func">IsOptional</span>(<span class="optional">ParamIndex</span>)</pre> <h4 id="IsOptional_Parameters">参数</h4> <dl> <dt>ParamIndex</dt> <dd> <p>类型: <a href="../Concepts.htm#numbers">整数</a></p> <p>如果省略, <em>Boolean</em> 表示此函数是否含有可选参数. 否则, 请指定基于 1 的参数索引. </p> </dd> </dl> <h4 id="IsOptional_Return_Value">返回值</h4> <p>类型: <a href="../Concepts.htm#boolean">整数(布尔值)</a></p> <p>如果参数可选, 此方法返回 1(true) , 否则为 0(false). 如果 <em>ParamIndex</em> 无效, 则抛出异常.</p> <h4 id="IsOptional_Remarks">备注</h4> <p>如果此函数是可变参数的, 那么参数可以不进行正式声明. 支持内置函数.</p> </div> <h2 id="Properties">属性</h2> <div class="methodShort" id="Name"><h3>Name</h3> <p>返回函数的名称.</p> <pre class="Syntax">FunctionName := FuncObj.<span class="func">Name</span></pre> </div> <div class="methodShort" id="IsBuiltIn"><h3>IsBuiltIn</h3> <p><a href="../Functions.htm#BuiltIn">内置函数</a>返回 1(true), 否则返回 0(false).</p> <pre class="Syntax">Boolean := FuncObj.<span class="func">IsBuiltIn</span></pre> </div> <div class="methodShort" id="IsVariadic"><h3>IsVariadic</h3> <p>如果函数为<a href="../Functions.htm#Variadic">可变参数</a>时返回 1(true), 否则返回 0(false).</p> <pre class="Syntax">Boolean := FuncObj.<span class="func">IsVariadic</span></pre> </div> <div class="methodShort" id="MinParams"><h3>MinParams</h3> <p>返回函数必要参数的数目.</p> <pre class="Syntax">ParamCount := FuncObj.<span class="func">MinParams</span></pre> </div> <div class="methodShort" id="MaxParams"><h3>MaxParams</h3> <p>对于用户定义函数返回正式声明的参数数目, 对于内置函数返回最大的参数数目.</p> <pre class="Syntax">ParamCount := FuncObj.<span class="func">MaxParams</span></pre> <p>如果函数是<a href="../Functions.htm#Variadic">可变参数</a>的, <em>ParamCount</em> 表示函数在不考虑 "variadic*" 可变参数的情况下可接受的最大参数数目.</p></div> </body> </html>