39
edits
(→Classdef examples in the wild: Added FinEALE which uses classdef extensively) |
(→not supported: added fuller example from bug report) |
||
Line 41: | Line 41: | ||
For example if we have <code>+mypackage/myfunc.m</code>, creating a function handle as <code>fh = @mypackage.myfunc</code> won't work. | For example if we have <code>+mypackage/myfunc.m</code>, creating a function handle as <code>fh = @mypackage.myfunc</code> won't work. | ||
As a workaround, we can create an indirection using an anonymous function <code>fh = @(varargin) mypackage.myfunc(varargin{:})</code>. | As a workaround, we can create an indirection using an anonymous function <code>fh = @(varargin) mypackage.myfunc(varargin{:})</code>. | ||
Similarly for static class methods where <code>fh = @MyClass.myfunc</code> isn't yet supported. | Similarly for static class methods where <code>fh = @MyClass.myfunc</code> isn't yet supported. | ||
A fuller example is also given below: | |||
<source lang="octave"> | |||
classdef method_function_handle_test | |||
% properties | |||
% | |||
% | |||
% end | |||
properties (Hidden, SetAccess = protected) | |||
hfoo = [];% handle to function | |||
end | |||
methods | |||
function self = method_function_handle_test () | |||
self.hfoo = @foo; | |||
end | |||
function bar (self) | |||
self.hfoo (self); | |||
end | |||
end | |||
methods (Hidden, Access = protected) | |||
function foo (self) | |||
disp ('hello!'); | |||
end | |||
end | |||
end | |||
</source> | |||
Then running: | |||
<source lang="text"> | |||
>> x = method_function_handle_test | |||
error: @foo: no function and no method found | |||
error: called from | |||
method_function_handle_test at line 17 column 17 | |||
stopped in <****>/scratch/mfiles/octave_tests/method_function_handle_test.m at line 17 | |||
17: self.hfoo = @foo; | |||
</source> | |||
* Defining [http://www.mathworks.com/help/matlab/matlab_oop/specifying-methods-and-functions.html#br2la89 local functions] in the same classdef-file is not working. For example, the following code gives a syntax/parse error: | * Defining [http://www.mathworks.com/help/matlab/matlab_oop/specifying-methods-and-functions.html#br2la89 local functions] in the same classdef-file is not working. For example, the following code gives a syntax/parse error: |
edits