我创建了一个带有Id属性的对象。 我正在尝试创建一个数组,它将根据数组中的位置或从1开始的静态递增int自动填充Id属性。
我该如何实现?
我尝试创建一个id为输入的构造函数,但是编写 myArr(100)= myObj会抛出错误。 我如何使用id初始化它(使用静态id或任何其他方式)。
由于
答案 0 :(得分:0)
我知道这只是一个部分解决方案,但假设你有一个矩阵M,其中第一个索引是ID值,那么这就是你可以做的:
M(:,1) = 1:size(M,1)
或者,如果您有一个矩阵M,其中第一列需要添加ID值:
M = [1:size(M,1) M]
答案 1 :(得分: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 他们在official tutorial ...
中使用了更加天真的基于for的语法