How to require a custom class type with addRequired?
    10 次查看(过去 30 天)
  
       显示 更早的评论
    
I have a custom class,
classdef foo
    properties
        %Property stuff
        prop1;
    end
    methods
        function obj = foo( )
            %Constructor stuff.
            obj.prop1 = 'test';
        end
    end
end
 and I want the input of a function to require that the variable type is this custom class.
function out = fun( varargin )
    p = inputParser;
    addRequired( p, 'InputName', @(x) isa( x, 'foo' ) );
    parse( p, varargin{:} );
    % Function stuff
end
When I try doing this
% Script.
objInstance = foo();
out = fun( 'InputName', objInstance )
I get this error:
" The value of 'InputName' is invalid. It must satisfy the function: @(x)isa(x,'foo'). "
0 个评论
采纳的回答
  Steven Lord
    
      
 2019-12-5
        If you're using release R2019b or later, consider using function argument validation instead of inputParser.
But if this function requires an input of this class, should it be a separate function or should it be a method defined inside the class itself?
classdef foo
    methods
        function out = fun(x)
            % x MUST be a foo (which could mean it's a subclass of foo)
        end
    end
end
更多回答(1 个)
  Luna
      
 2019-12-5
        Variable out is not defined in the function bar. Also bar is already a built-in function. Use another function name instead. 
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Argument Definitions 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


