11.12.2 匿名函数

匿名函数使用以下语法定义:

@(参数列表) 表达式

未在参数列表中出现的任何变量将从外部作用域继承。匿名函数可用于从表达式创建简单的未命名函数,也可用于包装对其他函数的调用,以使其适配像 quad 这样的函数。例如:

f = @(x) x.^2;
quad (f, 0, 10)
    ⇒   333.33

从表达式 x.^2 创建了一个简单的未命名函数并将其传递给 quad

quad (@(x) sin (x), 0, pi)
    ⇒   2

包装了另一个函数,

a = 1;
b = 2;
quad (@(x) betainc (x, a, b), 0, 0.4)
    ⇒   0.13867

将带有多个参数的函数适配为 quad 所需的形式。在此示例中,传递给 betaincab 的值是从当前环境继承的。

请注意,出于性能原因,最好使用现有 Octave 函数的句柄,而不是定义包装现有函数的匿名函数。如果代码写成:

quad (@sin, 0, pi)

sin (x) 的积分速度比使用匿名函数 @(x) sin (x) 快 5 倍。许多运算符都有与之对应的函数形式,这些函数形式可能比匿名函数更合适。与其写作:

f = @(x, y) x + y

不如编码为:

f = @plus

请参阅 运算符重载,以获取具有函数形式的运算符列表。


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

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