Changes

Jump to navigation Jump to search
824 bytes added ,  06:10, 25 June 2015
→‎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:
39

edits

Navigation menu