0
私は学習の練習としてmatlabにツリークラスを構築しています。Matlabのユーザー定義クラスのクラスの型をテストします
コードを以下に示します。
LeftNodeとRightNodeのクラスタイプをテストしている部分が問題を抱えています。
以下のバージョンは、最初の呼び出しでは機能しますが、クラスの種類をテストするための特にクリーンな方法ではなく、ベースケース(RightNodeまたはLeftNodeを持たない) 。
どちらの場合でも、ユーザー定義クラスのクラスタイプをテストする正しい方法は何ですか?コンペア機能
isa(this.LeftNode,'TreeNode')
あなたは正しい文字列を使用している場合あなたの方法でも動作します。ちょうどクラスをテストするための最良の方法は、「ISA」関数である
LeftNode = TreeNode(2,[],[]);
RightNode = TreeNode(2,[],[]);
TN = TreeNode(1,LeftNode, RightNode);
TN.getSum()
classdef TreeNode < handle
properties
LeftNode
RightNode
Data
end
methods
function TN = TreeNode(Data, Left, Right)
TN.Data = Data;
TN.LeftNode = Left;
TN.RightNode = Right;
end
function sum = getSum(this)
sum = this.Data;
if (class(this.LeftNode) == 'TreeNode') == 1 || isempty(this.LeftNode)
sum = sum + getSum(this.LeftNode);
end
if (class(this.RightNode) == 'TreeNode') == 1 || isempty(this.RightNode)
sum = sum + getSum(this.RightNode);
end
end
end
end
A)あなたは、テスト== trueの場合は行う必要はありません。それはちょうど余分です。テストすればやります。 b)控除が返ってくるとあなたは何を期待していますか?あなたのオブジェクトに 'isempty'メソッドを定義しましたか? –