8.2.3 通过句柄访问

函数可以通过使用特殊运算符 @ 获取的函数句柄进行抽象和引用。例如:

f = @plus;
f (2, 2)
⇒   4

这相当于直接调用 plus (2, 2)。除了用于通用编程中的抽象之外,函数句柄还可用于图形(figure)和绘图(graphics)的回调方法中——通过向属性添加监听器或分配预定义的操作,例如以下示例:

function mydeletefcn (h, ~, msg)
  printf (msg);
endfunction
sombrero;
set (gcf, "deletefcn", {@mydeletefcn, "Bye!\n"});
close;

以上代码将在关闭(删除)图形时向终端输出 "Bye!"。有许多图形属性操作可以为其分配回调函数,包括 buttondownfcnwindowscrollwheelfcncreatefcndeletefcnkeypressfcn 等。

请注意,@ 字符在定义类函数(即方法)中也起到作用,但并非作为语法元素。相反,它作为目录名的前缀,该目录包含某个类的方法,而这个类的目录名去掉了 @ 字符。参见 面向对象编程

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

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