开发者社区> 问答> 正文

创建重载的end函数的函数句柄

MATLAB允许为自定义类重载各种运算符。不公开的可重载运算符之一是end,可以从\matlab\lang\end.m以下中学到:

%   END(A,K,N) is called for indexing expressions involving the object A
%   when END is part of the K-th index out of N indices.  For example,
%   the expression A(end-1,:) calls A's END method with END(A,1,2).

此类方法的一个示例是table.end(粘贴在MATLAB命令行中,然后按“打开选择”转到其定义;在中定义了...\matlab\datatypes@tabular\end.m)。

与普通方法不同,不能简单地编写hEnd = @end,因为这样会产生错误:

>> hEnd = @end;
 hEnd = @end;
         ↑
Error: Illegal use of reserved keyword "end".

另一方面,编写是e = str2func('end');可行的,但是它链接到默认end功能(即使在临时切换到end.m找到所需文件夹的文件夹中)。

失败的尝试包括str2func('table>end');,str2func('table\end');,str2func('table.end');和@(a,b,c)table.end(a,b,c);。

我的问题:如何创建end特定类的函数的句柄?

展开
收起
游客ufivfoddcd53c 2020-01-04 13:56:56 820 0
1 条回答
写回答
取消 提交回答
  • 如果您的'end'函数位于matlab路径中,则matlab会根据输入将其视为评估的候选对象,在这种情况下,如果输入对象属于'table'类,则键入feval(str2func('end'),i, j)评估在@ table / end.m文件夹中定义的结束函数

    2020-01-04 13:57:18
    赞同 展开评论 打赏
问答分类:
C++
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载