2016-09-30 102 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

相關問題