Id プロパティを持つオブジェクトを作成しました。配列内の場所または 1 から始まる静的なインクリメント int に従って Id プロパティを自動的に埋める配列を作成しようとしています。
これを実装するにはどうすればよいですか?
id を入力としてコンストラクタを作成しようとしたのですが、myArr(100) = myObj と書くとエラーになります。これをIDでも初期化するにはどうすればよいですか(静的IDまたはその他の方法を使用)。
ありがとう
これが部分的な解決策にすぎないことはわかっていますが、最初のインデックスが ID 値である行列 M があると仮定すると、次のことができます。
M(:,1) = 1:size(M,1)
または、最初の列に ID 値を追加する必要がある行列 M がある場合:
M = [1:size(M,1) M]
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ベースの構文を使用しています...