0

Id プロパティを持つオブジェクトを作成しました。配列内の場所または 1 から始まる静的なインクリメント int に従って Id プロパティを自動的に埋める配列を作成しようとしています。

これを実装するにはどうすればよいですか?

id を入力としてコンストラクタを作成しようとしたのですが、myArr(100) = myObj と書くとエラーになります。これをIDでも初期化するにはどうすればよいですか(静的IDまたはその他の方法を使用)。

ありがとう

4

2 に答える 2

0

これが部分的な解決策にすぎないことはわかっていますが、最初のインデックスが ID 値である行列 M があると仮定すると、次のことができます。

M(:,1) = 1:size(M,1)

または、最初の列に ID 値を追加する必要がある行列 M がある場合:

M = [1:size(M,1) M]
于 2012-12-29T20:04:33.670 に答える
0
classdef a_class < handle    

properties
    id
end

methods
    function obj = a_class(size_of_matrix)   

        if nargin == 0 %default constructor
            %something constant. Do not try to place counter here.

        else
            if numel(size_of_matrix)==1 
                size_of_matrix = [size_of_matrix size_of_matrix];
            end;

            obj(size_of_matrix(:)) = a_class; % Preallocate object array

            id_cell = num2cell(1:prod(size_of_matrix));
            [obj(1:prod(size_of_matrix)).id] = id_cell{:};

        end
    end
end
end

恐れ入りますが、これが最善の解決策です。

デフォルトのコンストラクターでカウンターを定義してから配列を割り当てることはできないことに注意してください。実際には、一度しか呼び出されないためです。

PS彼らは公式チュートリアルでさらに単純なforベースの構文を使用しています...

于 2012-12-30T09:11:02.850 に答える