Multiple numerics as one map key / Merge Objects based on parameters
Mostra commenti meno recenti
I want to use two numerics as a single key for a map to merge similar objects of a class. How can I do that?
My class looks like this:
classdef Foo
properties
a double
b double
val double
end
methods
function obj = Foo(a,b,val)
obj.a = a;
obj.b = b;
obj.val = val;
end
function o = plus(l,r)
o = Foo(l.a,l.b,l.val+r.val);
end
function k = getKey(obj)
<...>
end
end
end
The code should do the following:
fooCell = {Foo(3,4,100) Foo(3,4,20) Foo(2,5,20)};
fooMap = containers.Map('KeyType', <...> ,'ValueType','any');
for i=1:length(fooCell)
k = fooCell{i}.getKey;
if fooMap.isKey(k)
fooMap(k) = fooMap(k)+fooCell{i};
else
fooMap(k) = fooCell{i};
end
end
fooMap.values %Should contain 2 objects: Foo(3,4,120) & Foo(2,5,20)
How should the getKey method look like?
Risposta accettata
Più risposte (0)
Categorie
Scopri di più su Create System Objects in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!