2016-09-30 196 views
0

与我们可以在没有初始化的情况下定义构造函数的C++类似,我们可以在Matlab classdef中做到吗?我试过,但它抱怨说“测试已经定义”,这意味着我不能定义两个具有相同名称的函数。没有初始化属性的Matlab类构造函数

classdef Test 
    properties 
     id; 
    end 
    methods 
     %constructor without initialization 
     function obj = Test 
     end 

     %constructor with initialization 
     function obj = Test(x) 
      obj.id = x; 
      end 
     end 

end 

回答

2

您的构造函数定义可以指定一个输入参数,它在技术上不必由用户传递。您可以使用输入变量名称exist来确定是否提供了输入,并且只在提供输入时才分配属性值。

classdef Test 
    properties 
     id; 
    end 

    methods 
     function obj = Test(x) 
      if exist('x', 'var') 
       obj.id = x; 
      end 
     end 
    end 
end 
+0

谢谢。 Test(x,y)如何修改exists()? – daydayup

+0

@daydayup你可以看看'exist'的文档,但是你可以为'y'添加另外一个'if'('y','var')'' – Suever

+0

OK。非常感谢! – daydayup