11.12.1函数句柄

函数句柄是指向另一个函数的指针,从语法定义

@function-name

例如

f = @sin;

创建一个名为的函数句柄f指的是函数sin.

函数句柄用于间接调用其他函数,或将函数作为参数传递给另一个函数,如quadfsolve例如

f = @sin;
quad (f, 0, pi)
    ⇒ 2

您可以使用feval要使用函数句柄调用函数,请在后面写上函数句柄的名称和参数列表。如果没有参数,则必须使用空的参数列表()’. 例如

f = @sin;
feval (f, pi/4)
    ⇒ 0.70711
f (pi/4)
    ⇒ 0.70711
 
: tf = is_function_handle (x)

如果返回truex是一个函数句柄。

详见: isa, typeinfo, class, functions.

广告
 
: s = functions (fcn_handle)

返回一个包含有关函数句柄信息的结构体fcn_handle.

结构体s始终包含以下三个字段:

function

函数名称。对于匿名函数(无名称),这将是实际的函数定义。

广告
type

函数的类型。

anonymous

该函数是匿名的。

private

该函数是私有的。

overloaded

该函数重载现有函数。

simple

该函数是一个内置函数或m-file函数。

subfunction

该函数是m文件中的一个子函数。

广告
nested

函数是嵌套的。

广告
file

将被调用以执行该函数的m文件。对于匿名函数和内置函数,此字段为空。

广告

此外,某些函数类型可能会在其他字段中返回更多信息。

警告 functions仅用于调试目的。它的行为可能会在未来发生变化,程序不应该依赖于任何特定的输出格式。

详见: func2str, str2func.

广告
 
: str = func2str (fcn_handle)

返回一个字符串,该字符串包含functionhandle引用的函数的名称fcn_handle.

详见: str2func, functions.

广告
 
: hfcn = str2func (str)

返回从字符串构造的函数句柄str.

输入可以是函数的名称,例如"sin"或定义函数的字符串,例如"@(x) sin (x + pi)".

编程注意事项:在大多数情况下,最好使用匿名函数语法,并让Octave解析器创建函数句柄,而不是使用str2func例如

hfcn = @sin ;
hfcn = @(x) sin (x + pi) ;

详见: func2str, functions.

广告
 
: vars = symvar (str)

识别字符串中的符号变量名str.

常见常量名称,如i, j, pi, Inf和Octave函数,如sinplot被忽略。

所标识的任何名称都将在字符串的元胞数组中返回。如果未找到变量,则数组为空。

用例

symvar ("x^2 + y^2 == 4")
⇒ {
     [1,1] = x
     [2,1] = y
   }
广告

版权所有 © 2024-2025 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2