zacząłem syf wokół z poprzedniego pytania, starając się dynamicznie dowiedzieć się, które pola były możliwe do ustawienia.
Nie dość zmusić go do pracy, ale mogę zdobyć (większość) tylko do odczytu właściwości za pomocą różnicy między wartościami powrotnymi set(h)
i get(h)
.
Jedyną właściwością, która się tutaj nie pojawia, jest właściwość Parent
, którą można ustawić, ale nie powinna być zmieniana w poprzednim pytaniu.
Oto jak Dostałem zakaz ustawialne właściwości:
h = plot(1:0.2:10);
xx=get(h)
close all
h2 = plot(0);
settableHandles = set(h2);
settableNames = fieldnames(settableHandles);
allHandles = get(h2);
allNames = fieldnames(allHandles);
nonSettableHandles = rmfield(allHandles,settableNames);
nonSettableNames = fieldnames(nonSettableHandles)
ten wytwarza komórkę nonSettableNames
:
nonSettableNames =
'Annotation'
'BeingDeleted'
'Type'
Zgaduję, że możesz zredukować wszystko do jednej linijki: 'fieldnames (rmfield (get (h), fieldnames (set (h))))'. Bardzo sprytny, +1. –
@EitanT +1 dla jednej linijki! – user1884905
+1 - Nigdy nie zauważyłem, że mogę uzyskać wartość zwracaną z 'set'! – Jonas