Dev*_*-iL 10 oop matlab reserved-words function-handle class-members
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).
Run Code Online (Sandbox Code Playgroud)
这种方法的一个例子是table.end(粘贴在MATLAB命令行中并按"打开选择"以转到其定义;它在中定义...\matlab\datatypes\@tabular\end.m).
与普通方法不同,人们不能简单地写hEnd = @end,因为这会给出错误:
>> hEnd = @end;
hEnd = @end;
?
Error: Illegal use of reserved keyword "end".
Run Code Online (Sandbox Code Playgroud)
另一方面,写入e = str2func('end');工作,但它链接到默认end功能(即使临时切换到end.m找到所需的文件夹).
失败的尝试包括str2func('table>end');,str2func('table\end');,str2func('table.end');和@(a,b,c)table.end(a,b,c);.
我的问题:如何创建end特定类功能的句柄?
\n\n\n重载 \xe2\x80\x94 如果您指定的函数重载了非基本 MATLAB 类中的函数,则该函数在构造时不会与函数句柄关联。相反,MATLAB 会考虑输入参数并确定在求值时调用哪个实现。
\n
\n\n\n函数句柄存储其绝对路径,因此当您拥有有效句柄时,您可以从任何位置调用该函数。创建句柄时不必指定函数的路径,只需指定函数名称。
\n
因此,如果您的“end”函数位于 matlab 路径中,则 matlab 会根据输入将其视为评估的候选函数,在您的情况下,如果输入对象属于“table”类,则输入 feval(str2func('end'),i, j) 评估文件夹 @table/end.m 中定义的结束函数
\n| 归档时间: |
|
| 查看次数: |
175 次 |
| 最近记录: |