function - Octave:在函数内部使用匿名函数
问题描述
Octave 有没有办法在函数内部使用匿名函数?我想避免函数文件和配置文件之间存在依赖关系。配置文件的链接只能来自 main.m 内部。
我的项目具有以下文件结构:
% config.m
ms2kmh = @(v) v * 3.6;
% main.m
source('config.m');
source('application.m');
% application_xy.m
x = 1;
y = 2;
A = function_xy(x, y)
% function_xy.m
function A = function_xy(x, y)
source('config.m'); % <-- want to avoid this line
A = x * ms2kmh(y);
end
谢谢你
解决方案
听起来您正在尝试创建一个具有状态的对象(在本例中,是 x、y 输入和所需的函数句柄)。例如
% @application_xy/application_xy.m
function Obj = application_xy(x, y, fhandle)
Obj = struct( 'x', x, 'y', y, 'f', fhandle );
Obj = class( Obj, 'application_xy' );
end
% @application_xy/function_xy.m
function A = function_xy(Obj)
A = Obj.x * Obj.f( Obj.y );
end
% config.m
ms2kmh = @(v) v * 3.6;
% main.m
source('config.m');
MyObj = application_xy(1, 2, ms2kmh );
A = function_xy( MyObj )
这是 octave 中的面向对象编程的手册条目,如果您不太熟悉它并想阅读更多内容。
推荐阅读
- node.js - 如何取消 requestjs 下载
- templates - 无法在 Grapesjs 中加载保存的模板
- arduino - 为什么这个使用端口操作的 arduino 代码不起作用?
- html - 将变量从 bash 脚本传递到 HTML
- python-3.x - python aws s3:根据大小下载文件
- css - 如何通过css更改一些文本
- c# - C# 创建自己的哈希算法 - 99 个文档,0.0001 次冲突?
- scala - 如何在启动时加载配置文件
- java - 我需要一个代码,它应该使用 java 从 Excel 获取日期为 YYYY-MM-DD 格式
- javascript - 我的 Angular 7 Web 组件@Input
当我绑定错误值时不起作用