我正在尝试列出我在Matlab文件夹中的某个文件夹中创建的类 - 仅使用其名称(类名)
作为一个例子,我有一个名为'SimpleString'的类 - 我的目标是从该类实例化一个对象,如果我知道它的名字是'SimpleString'
所以实时,我想找出文件夹中的类(完成),然后能够实例化任何这些类(我的问题)谢谢
我有一个缓存评估功能.作为参数之一,它需要一个函数句柄.在某些情况下,函数句柄是不可访问的,我不太明白为什么.下面的例子显示了让我难过的原因:
>> A.a = @plus; feval(@A.a, 1, 1)
ans =
2
>> clear A
>> A.a.a = @plus; feval(@A.a.a, 1, 1)
Error using feval
Undefined function 'A.a.a' for input arguments of type 'double'.
Run Code Online (Sandbox Code Playgroud)
因此,如果我将一个函数句柄存储为一个结构成员,如果它是一个深度,我可以传递它,但如果它是两个级别深,则不能.在我的实际使用情况下,我有一个结构D保存各种类别的许多(117)的情况下,所以其实我有stct.obj.meth,这里stct是一个结构,obj是一个类的实例/对象,meth是一种方法.传递@stct.obj.meth失败,但如果我分配A = stct.obj,则传递@A.meth成功.
在什么条件下我可以将函数句柄作为参数传递,以便它仍然可以在堆栈中访问?
编辑:虽然在上面的用例中,我可以简单地删除@因为@plus已经是一个函数句柄.但是,请考虑以下情况:
>> type cltest.m
classdef cltest < handle
methods
function C = mymeth(self, a, b)
C = a + b;
end
end …Run Code Online (Sandbox Code Playgroud)